2 つのプロパティを持つ 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 が終了すると、コントロール メソッドは続行し、テキストを別のものに変更した後、テキストを入力します。