我有一个具有两个属性的 Silverlight 自定义控件;文本和 ID。我根据下面的代码为这些创建了 DependencyProperties。
public static readonly DependencyProperty TextProperty = DependencyProperty.Register("Text", typeof(string), typeof(LookupControl), new PropertyMetadata(NotifyPropertyChanged));
public static readonly DependencyProperty IdProperty = DependencyProperty.Register("Id", typeof(Guid?), typeof(LookupControl), new PropertyMetadata(NotifyPropertyChanged));
public event PropertyChangedEventHandler PropertyChanged;
public static void NotifyPropertyChanged(object sender, DependencyPropertyChangedEventArgs args)
{
var control = sender as LookupControl;
if (control != null && control.PropertyChanged != null)
{
control.PropertyChanged(control, new PropertyChangedEventArgs("Text"));
}
}
public Guid? Id
{
get { return (Guid?)GetValue(IdProperty); }
set { SetValue(IdProperty, value); }
}
public string Text
{
get { return (string)GetValue(TextProperty); }
set { SetValue(TextProperty, value); }
}
在控件方法中,首先填充 Id,然后填充 Text。我的问题是,当我在此控件上绑定到 Text 和 Id 时,我希望它们的数据同步填充,以便在任一属性上触发 PropertyChanged 事件时,它们都已更新数据。
在这个时间点,我发现 Id 发生了变化,执行了一些处理,如果需要,我将 Text 设置为一个新值。但是一旦 Id 的这个 OnChange 完成,那么在我已经将其更改回其他内容之后,控制方法将继续并填充文本。