Dav*_*ave 4 c# wpf properties mvvm
命名约定意味着(通常)属性是名词,方法是动词.现在,我知道这些是指南,而不是规则,但是如果可以的话,最好遵循指南.
这意味着,以下内容
Person.Name = "Dave";
Run Code Online (Sandbox Code Playgroud)
应该只设置Name属性.我不希望这个属性看起来像
public string Name
{
set
{
UpdateDatabase(value);
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题几乎就是上面的例子,但与DependencyProperties有关.
我的应用程序有一个UserControl,它看起来像
<uc:MyControl MyControlMyValue="{Binding RelativeSource={RelativeSource AncestorType=userControls:MyOtherControl}, Path=MyValue, Mode=OneWayToSource}" />
Run Code Online (Sandbox Code Playgroud)
因此,正如您在上面所看到的,当更新MyControlMyValue属性时,它会更新MyValue属性.我遇到的问题是当这个属性更新时,我需要它来执行比简单绑定更多的逻辑!
目前,我投票忽略指南并实施类似的东西
private double _myValue;
public double MyValue
{
get { return __myValue; }
set
{
if (value == __myValue)
return;
__myValue= value;
LookAtMeHiddenAway();
OnPropertyChanged("MyValue");
}
}
Run Code Online (Sandbox Code Playgroud)
是否有更好的方法,因为它对我来说感觉非常错误?
这得看情况.如果我们谈论一般的编程指南,我会说不.当我们使用我们期望存储和检索数据的属性(写/读)时,不要像我和其他人一样调用属性内的方法.因此,如果您要更改某些内容,请通过调用方法来更改它,通过声明其行为来表示.
在情况下,反而,WPF这是实际上是一个预期的行为.所以在的情况下,WPF性能是适用于内变化的数据,并预计以这种方式行事.
底线:对主题没有强烈的限制,但建议的指南基于给定环境中代码的预期行为.
| 归档时间: |
|
| 查看次数: |
140 次 |
| 最近记录: |