我在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的东西,但是怎么样?
谢谢!
答案 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>