我有一些相当低级别的类在我正在使用的WPF应用程序中使用。例如,一个对象将在ScrollViewer中显示为列表并与DataTemplate一起显示。绑定对于UI中使用的几个属性非常有用,我完全使用这个对象,因为它只是方便传递给UI。问题是UI没有得到数据更改的通知,因为它没有实现INotifyPropertyChanged或DependencyProperty。
所提到的类本打算成为可以完全独立于UI使用的库的一部分,所以我担心用特定于UI的东西使它变得混乱(特别是对于INPC,这是一个疯狂的代码量)为了这么小的事情。)
在这种情况下通常会做什么,用UI cruft混乱低级别类或者为UI创建一个包装类。或者还有其他选择吗?
答案 0 :(得分:1)
为了实现良好的分离,我将创建一个包装库类的类。包装器将实现INotifyPropertyChanged接口,并公开在更新时触发PropertyChanged事件的公共属性。包装器将从包装类中获取并设置实际值...
public class Internal
{
public int MyProperty { get; set; }
}
public class WrapperForInternal : INotifyPropertyChanged
{
public event PropertyChanged(object sender, PropertyChangedEventArgs e);
private Internal _i;
public WrapperForInternal(Internal i)
{
_i = i;
}
public int MyProperty
{
get { return _i.MyProperty; }
set
{
_i.MyProperty = value;
RaisePropertyChanged("MyProperty");
}
}
protected void RaisePropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
或者,您可以从Internal类派生并添加接口和触发事件的额外属性。但我希望自己完全分离。