绑定到Resources的datacontext

时间:2016-01-18 10:54:58

标签: c# wpf

我在usercontrols资源中定义了一个contextmenu,用户控件datacontext被设置为一个单独的viewmodel,它包含我想要绑定的属性。

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

 <Grid x:Name="MyGrid">

 </Grid>
</UserControl>

这里Visiblity属性定义了UserControl的DataContext。由于DataContext设置如下:

(Content as FrameworkElement).DataContext = myViewModel;

我怀疑“内容”不包括UserControl.Resources。我想我的绑定中需要一些RelativSource的东西,但是怎么样?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果RelativeSource属性位于viewmodel中,则无需使用IsVisible

例如:

<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>