如何正确地将单个视图绑定到多个viewmodel



我有一个视图,它有这样的绑定:

<TextBlock Text="{Binding Attribute1, Mode=TwoWay}" />
<TextBlock Text="{Binding Attribute2, Mode=TwoWay}" />

我也有大量的视图模型,其中依赖属性以某种方式被调用(NameOfficialName等),但本质上它们是Attribute1,所以我想使用相同的视图向用户显示它们。所有绑定都应该是双向的。我正在考虑创建一个临时类,如:

public class AttributesInfo
{
   string Attribute1{ get; set; }
   // other attributes
}

并在每个视图模型中公开属性Attributes:

return new AttributesInfo{ Attribute1 = Name, ... };
return new AttributesInfo{ Attribute1 = OfficialName, ... };

将提供一个视图:

<TextBlock Text="{Binding AttributesInfo.Attribute1, Mode=TwoWay}" />

现在我正在考虑双向绑定,我明白这是一个错误的解决方案。有好的吗?

最好是创建一个具有所需属性属性的接口,并在不同的vm中实现它。

public interface IAttribute
{
   string Attribute1 {get; set;}
   .
   .
   .
}
public class someVM : IAttribute
{
  private string _name;
  public string Nam
  {
     get {return _name;}
     set
     {
        _name = value;
        NotifyPropertyChanged("Name");
                 }
  }
  public string Attribute1
  {
     get{return this.Name;}
     set
     {
        this.Name = value; 
        NotifyPropertyChange("Attribute1");
     }
  }
}

通过这种方式,你的属性将与属性同步,并且你可以在所有vm中使用相同的视图。

相关内容

  • 没有找到相关文章

最新更新