我有一个带有Window
和UserControl
的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中实现这一点。有谁知道这是否可能以及如何?
答案 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"/>