【发布时间】:2016-11-03 12:53:10
【问题描述】:
在 wpf mvvm 模式下,我有一个这样的用户控件
<UserControl MyControl>
<Grid>
<DataGrid
ItemsSource="{Binding MySource}"
Visibility = "{Binding the usercontrol's datacontext.UserGrade}"
/>
</Grid>
</UserControl>
在我的 MainPageView 中我这样使用它
<Window:MainPageView
xmlns:vm="clr-namespace:My.ViewModel"
xmlns:userCtl="clr-namespace:My.Controls"
<Window.DataContext>
<vm:MainPageViewModel/>
</Window.DataContext>
<userCtl:MyControl>
<userCtl:Mycontrol.DataContext>
<vm:MyControlViewModel/>
</userCtl:Mycontrol.DataContext>
<userCtl:MyControl>
</Window:MainPageView>
现在的问题是,如何访问 MyUserControl 的 datacontext.UserVisiable,并绑定到 MyUserControl 的数据网格可见性?我尝试使用 {RelativeSource FindAncestor, AncestorType={x:Type UserControl}} 但它不起作用,还是我做错了?谢谢!
【问题讨论】:
-
你想访问
Window的属性,但是使用UserControl输入FindAncestor...为什么? -
一切正常,因为我的视图模型在基础视图模型中具有相同的属性
-
您想访问 MyUserControl 的 datacontext.Visibility。 MyControlViewModel 上有 Visibility 属性吗?
-
是的,我有一个可见性属性
-
FindAncestor 很烂。只需给根一个不同的名称(一个 guid 甚至可以)并使用 ElementName=whatevs。
标签: c# wpf mvvm binding datacontext