0

そのため、xaml ユーザー コントロールの bool 依存関係プロパティを作成しました。ただし、xaml で値が false に設定されている場合、xaml で true に設定されている場合、イベントは発生しません。どうすればイベントを発生させることができますか?

public static readonly DependencyProperty AvailableProperty =
    DependencyProperty.Register("Available", typeof(bool), typeof(DetailPannel),
    new PropertyMetadata(null, onAvailablePropertyChanged));

public bool Available
{
    get { return (bool)GetValue(AvailableProperty);  }
    set { SetValue(AvailableProperty, value); }
}

private async static void onAvailablePropertyChanged(DependencyObject d,   DependencyPropertyChangedEventArgs e)
{
    var obj = d as DetailPannel;
    bool avaible = (bool.Parse(e.NewValue.ToString())); 
    if(avaible == false )
    {            
        obj.PreviewImage.Source = await ConvertToGreyscale(obj.PreviewImage);
        obj.StateRelatedImage.Source = new BitmapImage(new Uri("ms-appx:///icon.png")); 
    }
} 
4

1 に答える 1

1

この値nullはboolプロパティには無効です。PropertyMetadataを変更して、falseまたはtrueデフォルト値として指定します。

public static readonly DependencyProperty AvailableProperty =
    DependencyProperty.Register("Available", typeof(bool), typeof(DetailPannel),
    new PropertyMetadata(false, onAvailablePropertyChanged));

また、PropertyChangedハンドラーのコードは疑わしいようです。を使用しないでください。ただし、キャストするbool.Parseだけです。e.NewValuebool

private async static void onAvailablePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
    var obj = d as DetailPannel;
    var available = (bool)e.NewValue; 

    if (!available)
    {
        ...
    }
} 
于 2012-12-14T21:58:34.980 に答える