我正在处理在两个视图之间切换的usercontrol。 usercontrol绑定/绑定到视图模型。我能够在两个视图之间切换,但无法绑定到母视图模型的属性。下面是代码
<UserControl.Resources>
<DataTemplate x:Key="DoubleViewKey" DataType="{x:Type viewmodels:ArithmeticViewModel}">
<views:ArithmeticDoubleFloatView></views:ArithmeticDoubleFloatView>
</DataTemplate>
<DataTemplate x:Key="IntegerViewKey" DataType="{x:Type viewmodels:ArithmeticViewModel}">
<views:ArithmeticInt32View></views:ArithmeticInt32View>
</DataTemplate>
我可以在两个视图之间切换,控件也可以正确呈现。但即使ArithmeticViewModel属性不为null,它们也是空的。我希望我的问题有道理,并提前感谢您的帮助。
答案 0 :(得分:0)
如果您希望将数据绑定到父视图模型的子UserControl
,则可以使用RelativeSource Binding
执行此操作。您在RelativeSource Binding
中添加的内容取决于您如何设置项目。
例如,假设您的父视图是MainWindow.xaml
文件,并且您已正确设置了Window.DataContext
属性的有效父视图模型。在MainWindow
XAML中声明的任何子视图内的控件可以访问父视图模型,如下所示:
<TextBox Text="{Binding DataContext.TextValue,
RelativeSource={RelativeSource AncestorType={x:Type MainWindow}}}" />
使用Binding.Path
启动DataContext.
值非常重要,因为该属性位于设置为DataContext
的{{1}}的对象中,因此它不会没有这个工作。