2016-01-18 3 views
1

Я определил контекстменю в ресурсах usercontrols, пользовательский элемент управления datacontext установлен в отдельную модель представления, которая содержит свойство, к которому я хочу привязать.Связывание с datacontext из ресурсов

<UserControl> 
<UserControl.Resources> 
    <ResourceDictionary> 
    <ContextMenu> 
     <MenuItem Visiblity="{Binding IsVisible}"/> 
    </ContextMenu> 
    <ResourceDictionary> 

<Grid x:Name="MyGrid"> 

</Grid> 
</UserControl> 

Здесь свойство Visiblity определяется DataContext UserControl. Так как DataContext устанавливается так:

(Content as FrameworkElement).DataContext = myViewModel; 

Я подозреваю, что «содержание» не включает UserControl.Resources. Я думаю, мне понадобится материал RelativSource в моей привязке, но как?

Спасибо!

ответ

1

Не нужно использовать RelativeSource, если IsVisible Недвижимость находится в viewmodel.

Например:

<Style TargetType="{x:Type local:MyControl}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type local:MyControl}"> 
       <StackPanel> 
        <TextBlock Text="Hello, World!" /> 
        <CheckBox x:Name="MainContentArea" IsChecked="{Binding IsVisible}" /> 
       </StackPanel> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
Смежные вопросы