<Controls:MyControl Mode="Mode1" Value="{Binding Path=Something}" />
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,当我在ListView的数据模板中使用此控件时,在设置Mode属性之前发生绑定.
如何确保在值绑定之前始终设置模式?
您可以做的是延迟绑定,这样您就可以(几乎)确定模式值已设置到那时。.net 4.5 中有一个延迟绑定属性。这是一篇关于如何在 .Net 4.0 中模拟 .Net 4.0 中的 .Net 4.5 绑定的延迟属性的文章
我个人会在 viewModel (MVVM) 中实现它,这种问题很容易解决。创建两个属性 Mode 和 Something。当模式更改时,它应该触发“Something”属性也发生更改(通过 INotifyPropertyChanged 接口)。
class MyViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
private string _mode;
public string Mode
{
get { return _mode; }
set
{
_mode = value;
OnPropertyChanged("Mode");
// OnPropertyChanged("Something");
// or build up via a method:
// Something = DetermineFromMode(Mode);
}
}
private string _something;
public string Something
{
get { return _something; }
set
{
_something = value;
OnPropertyChanged("Something");
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4920 次 |
最近记录: |