我正在寻找常见问题的即用型实施 - 获取有关属性的信息,例如:已更改,初始值等。
我很确定我已经看到过这样的事情,但我找不到它。
我正在考虑这样的事情:
<p>{{ trails }}</p>
然后用法:
public EditableValue<string> Name;
你知道任何解决方案吗?
我正在基于WPF和MVVM创建项目。
答案 0 :(得分:0)
我建议您尝试在INotifyPropertyChanged
课程中实施EditableValue
,然后听取属性更改事件。
如果您尝试共享代码,那么我们就可以解决您可能遇到的任何问题。
答案 1 :(得分:0)
我曾经有类似的需求,写了一个类,看起来像这样:
public class EditableValue<T> : BindableBase where T : struct
{
private T _value;
private T? _displayValue;
public T Value
{
get { return _value; }
set
{
_value = value;
OnPropertyChanged(() => Value);
}
}
public T DisplayValue
{
get { return _displayValue ?? Value; }
set
{
_displayValue = value;
OnPropertyChanged(() => DisplayValue);
}
}
public bool HasChanges
{
get { return _displayValue.HasValue; }
}
public void DiscardChanges()
{
_displayValue = null;
OnPropertyChanged(() => DisplayValue);
}
public void ApplyChanges()
{
Value = DisplayValue;
OnPropertyChanged(() => DisplayValue);
OnPropertyChanged(() => Value);
}
}
请注意,它使用Prism.Mvvm nuget package中的BindableBase来实现INotifyPropertyChanged
。
仅绑定到DisplayValue
,您可以更改用户界面中的值,点击保存(或放弃)即可设置Value
(或重置DisplayValue
)。
只要没有为_displayValue
设置任何内容,就会传递实际值。
如果您只对实际值感兴趣而没有未完成的更改,也可以绑定到Value
。