4

プロパティが変更されるたびにコードを実行したい。以下はある程度機能します。

public partial class CustomControl : UserControl
{
        public bool myInstanceVariable = true;
        public static readonly DependencyProperty UserSatisfiedProperty =
            DependencyProperty.Register("UserSatisfied", typeof(bool?),
            typeof(WeeklyReportPlant), new FrameworkPropertyMetadata(new PropertyChangedCallback(OnUserSatisfiedChanged)));


        private static void OnUserSatisfiedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            Console.Write("Works!");
        }
}

これは、UserSatisfiedProperty の値が変更されたときに "Works" を出力します。問題は、OnUserSatisfiedChanged を呼び出している CustomControl のインスタンスにアクセスして、myInstanceVariable の値を取得する必要があることです。これどうやってするの?

4

1 に答える 1

4

インスタンスはDependencyObject dパラメーターを介して渡されます。あなたのWeeklyReportPlantタイプにキャストすることができます:

public partial class WeeklyReportPlant : UserControl
{
    public static readonly DependencyProperty UserSatisfiedProperty =
        DependencyProperty.Register(
            "UserSatisfied", typeof(bool?), typeof(WeeklyReportPlant),
            new FrameworkPropertyMetadata(new PropertyChangedCallback(OnUserSatisfiedChanged)));

    private static void OnUserSatisfiedChanged(
        DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        var instance = d as WeeklyReportPlant;
        ...
    }
}
于 2013-03-02T11:25:50.780 に答える