在其他视图中的 ViewModel 中设置属性

Set property in ViewModel within other View

我有一个带有 WindowUserControl 的 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"/>