我有一个具有以下绑定的视图:
<TextBlock Text="{Binding Attribute1, Mode=TwoWay}" />
<TextBlock Text="{Binding Attribute2, Mode=TwoWay}" />
此外,我还有大量的视图模型,其中以某种方式调用依赖项属性(名称, 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}" />
现在我正在考虑双向绑定,我明白这是一个错误的解决方案。有什么好的吗?
答案 0 :(得分:2)
如果您创建具有所需属性属性的接口并在不同的VM中实现它,那将更好。
e.g。
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使用相同的视图。