我有一个WPF应用程序,它由一个包含usercontrol的窗口组成,而usercontrol又包含另一个子usercontrol。
我的第二个usercontrol的viewmodel中有一个SelectedName的dependencyProperty。我希望父控件能够访问此属性并在父控件的文本块中显示SelectedName。
我对如何做到这一点感到有些困惑。
似乎有两种方法可以去(如果我理解正确的话) 1.在子控件上添加一个事件,并将事件冒泡向上并在父控件中处理。 2.直接在父控件的文本块绑定中尝试并访问子项的依赖项属性。
对于这些方法中的任何一种,我所坚持的是如何处理控件(子级或父级)datacontext或viewmodel。
这是一个标志,我正在走错了轨道,还是我需要将控件的datacontext转换为有问题的viewmodel类型,然后使用它?或者我是否需要在两个用户控件之间共享相同的viewmodel?
我很感激有关这种方法的任何反馈 - 任何示例都非常有用,因为我发现我有几个这种父/子控制要求的实例。
再次感谢您的时间。
答案 0 :(得分:2)
用于父控件的视图模型可以将子控件的视图模型作为属性,这样您就可以直接从父控件访问它。
public class ParentViewModel
{
public ChildViewModel child { get; set; }
}
然后在xaml中,假设datacontext设置为ParentViewModel对象,我们可以从ChildViewModel轻松访问属性......
<TextBlock Text="{Binding Path=child.SomeTextProperty}" />