在其他视图中的 ViewModel 中设置属性
Set property in ViewModel within other View
我有一个带有 Window
和 UserControl
的 WPF 应用程序。 UserControl
是使用 MVVM 模式实现的。所以在视图中我有一个 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 中做到这一点。有谁知道这是否可行以及如何实现?
您需要将依赖项 属性 添加到您的用户控件:
// 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"/>
我有一个带有 Window
和 UserControl
的 WPF 应用程序。 UserControl
是使用 MVVM 模式实现的。所以在视图中我有一个 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 中做到这一点。有谁知道这是否可行以及如何实现?
您需要将依赖项 属性 添加到您的用户控件:
// 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"/>