绑定到同一viewmodel的多个视图和数据模板

时间:2014-06-26 12:00:51

标签: c# wpf mvvm user-controls

我正在处理在两个视图之间切换的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,它们也是空的。我希望我的问题有道理,并提前感谢您的帮助。

1 个答案:

答案 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}}的对象中,因此它不会没有这个工作。