我有一个视图,它有这样的绑定:
<TextBlock Text="{Binding Attribute1, Mode=TwoWay}" />
<TextBlock Text="{Binding Attribute2, Mode=TwoWay}" />
我也有大量的视图模型,其中依赖属性以某种方式被调用(Name, OfficialName等),但本质上它们是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中使用相同的视图。