親ユーザーコントロールにデータバインドされる依存関係プロパティをWPFユーザーコントロールに作成しました。INotifyPropertyChanged
値が変更されたときに通知を送信するために、ビューモデルにを実装しました。
ユーザー制御コード:
public bool IsVisibile {
get { return (bool) GetValue(IsVisibileProperty); }
set { SetValue(IsVisibileProperty, value); }}
public static readonly DependencyProperty IsVisibileProperty =
DependencyProperty.Register("IsVisibile", typeof(bool), typeof(UserControl),
new PropertyMetadata(default(bool), VisiblePropertyChangedCallback));
private static void VisiblePropertyChangedCallback(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
{
if (dependencyPropertyChangedEventArgs.NewValue != null)
{
((UserControl) dependencyObject).IsVisibile = (bool) dependencyPropertyChangedEventArgs.NewValue;
}
}
親ユーザー コントロールの使用法:
<uc:UserControl IsVisible="{Binding IsViewModelVisible, UpdateSourceTrigger=PropertyChanged}"
「IsViewModelVisible」が変更された場合、プロパティ変更イベント ハンドラは呼び出されず、プロパティは更新されません。
何かご意見は?