wpf - 将控件绑定(bind)到两个属性

标签 wpf binding

使用 MVVM 模式和 WPF,我想将我的控件绑定(bind)到两个属性。假设我有一个绑定(bind)到 VM1 上的属性的标签,我想将它也绑定(bind)到 VM2 上的属性以将接收到的值从 VM1 发送到 VM2。

我可以使用 messenger 和多个项目元组类,但我想知道是否有另一种解决方案。多重绑定(bind)?但是我需要 ValueConverter。

感谢您的任何建议。

最佳答案

由于 View-Model 是公开公共(public)属性和命令的 View 的抽象,因此按照您解释的方式让一个 View 具有两个 View 模型没有多大意义.如果有一个 VM 类作为您的 View 的 View 模型,它会更合理,它具有类型为 VM1VM2 的两个属性.然后绑定(bind)将在 VM.VM1.YourText 上,您可以通过这样的事件通知 VM2:

在 VM1 中:

    public event EventHandler<EventArgs> ValueChanged;

    string _yourText;
    public string YourText
    {
        get
        {
            return _yourText;
        }
        set
        {
            _yourText= value;
            if (ValueChanged != null)
                ValueChanged(_yourText, new EventArgs());
        }
    }

在虚拟机中:

    public VM1 Vm1 {get; set;}
    public VM2 Vm2 {get; set;}

    public VM()
    {
        InitializeComponent();
        Vm1 = new VM1();
        Vm2 = new VM2();
        Vm1.ValueChanged += Item_ValueChanged;
        DataContext = this;
    }

    void Item_ValueChanged(object sender, EventArgs e)
    {
        VM2.YourAnotherText = sender.ToString();
    }

关于wpf - 将控件绑定(bind)到两个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30864476/

相关文章:

c# - WPF如何设置圆形按钮

wpf - 如何更改 WPF `<Separator/>` 的高度?

c# - WPF 事件绑定(bind)到 ViewModel(对于非命令类)

python - 如何在 python 中将名称与多个对象或值绑定(bind)

c# - UWP x :Bind with time

android - 服务间异步通信的最佳实践

c# - WPF:检测 C# 代码中的行验证错误

.net - 复杂 UI 上的批量更新

c# - WPF数据网格按所选列自动排序

wpf - Windows Phone 8.1,如何绑定(bind)样式到 View ?