【问题标题】:Binding to other control's view model绑定到其他控件的视图模型
【发布时间】:2017-01-29 09:22:04
【问题描述】:

我正在尝试绑定到包含控件的 ViewModel 内的属性,但 WPF 似乎不允许我绑定到该属性。尝试这样做时,它会报告错误:Windows Presentation Foundation (WPF) 项目不支持 ViewModel。

我有什么方法可以使用 XAML 绑定到 ViewModel 中的属性,还是我必须在后面的代码中执行我的所有 ViewModel 修改?

主窗口 XAML:

<Window x:Class="MyNamespace.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:MyNamespace"
    mc:Ignorable="d"
    Title="MainWindow">
<Grid>
    <!-- Error: Can't bind to ViewModel.MyValue -->
    <local:UserControl1 ViewModel.MyValue="123"/>
</Grid>

用户控制类:

public partial class UserControl1 :UserControl
{
    public UserControl1()
    {
        InitializeComponent();

        ViewModel = new UserControlViewModel();
    }

    public UserControlViewModel ViewModel
    {
        get
        {
            return (UserControlViewModel) GetValue(ViewModelProperty);
        }
        set
        {
            SetValue(ViewModelProperty, value);
        }
    }

    public static readonly DependencyProperty ViewModelProperty = DependencyProperty.Register(nameof(ViewModel), typeof(UserControlViewModel), typeof(UserControl1), new PropertyMetadata(null));
}

用户控件的视图模型类:

public class UserControlViewModel
{
    public string MyValue
    {
        get;
        set;
    }
}

【问题讨论】:

  • 您无法访问 XAML 中的嵌套属性。

标签: wpf data-binding


【解决方案1】:

不,您不能使用 XAML 设置控件的依赖属性的嵌套属性:

Can I use XAML to set a nested property (property of the value of a property) of a control?

只能设置属性本身的值:

<local:UserControl1>
    <local:UserControl1.ViewModel>
        <local:UserControlViewModel MyValue="123" />
    </local:UserControl1.ViewModel>
</local:UserControl1>

【讨论】:

    猜你喜欢
    • 2017-11-02
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多