在ViewModel中的其他View中设置属性

时间:2015-01-08 11:48:59

标签: c# wpf xaml mvvm user-controls

我有一个带有WindowUserControl的WPF应用程序。 UserControl是使用MVVM-Pattern实现的。所以在视图中我有一个Label,它在ViewModel中显示一个名为InfoMessage的string属性的值。

Window我添加了此UserControl的实例

<views:ItemInfoView Grid.Row="3" Grid.Column="1" x:Name="itemInfoView"/>

现在我想从我的Window的XAML设置InfoMessage。目前我不知道如何在xaml中实现这一点。在代码隐藏中,我可以访问我的控件的DataContext并将其转换为ItemInfoViewModel,并将值设置为:

((ItemInfoViewModel)itemInfoView.DataContext).InfoMessage = "Hello World";

但我希望有一种方法可以在纯XAML中实现这一点。有谁知道这是否可能以及如何?

1 个答案:

答案 0 :(得分:5)

您需要向用户控件添加依赖项属性:

// Your property
public string InfoMessage{get;set;}

// Register Dependency Property
public static readonly DependencyProperty InfoMessageProperty =
DependencyProperty.Register("InfoMessage", typeof(string), typeof(ItemInfoView),
        new UIPropertyMetadata(true));

然后你应该可以直接设置或绑定InfoMessage:

<views:ItemInfoView Grid.Row="3" Grid.Column="1" InfoMessage="Whatever"/>