سؤال

أحاول تطوير عنصر تحكم مستخدم زر ثلاثي الحالة المخصص وحتى الآن كنت أستخدم CTF لتعيين الخصائص.
ولكن أود تغيير هذا لاستخدام نظام خاصية WPF مع خصائص.

لسوء الحظ، أنا لا أتمكن من نجعلها تعمل، عندما أقوم بتعيين الخاصية من XAML (الأب) باستخدام Dynamicresource، لم يتم تعيين القيمة.

<common:StateImageButton x:Name="story_buttonRecord"  BackTest="{DynamicResource backTest}" />

هنا هو الرمز الذي لدي في جهاز تحكم الزر الخاص بي:

public ImageSource BackTest
    {
        get { return (ImageSource)this.GetValue(BackProp); }
        set { this.SetValue(WidthProp,value); }
    }

    public static readonly DependencyProperty BackProp =
        DependencyProperty.Register(
            "BackTest",
            typeof(ImageSource),
            typeof(StateImageButton),
            new FrameworkPropertyMetadata());

أنا لا أستخدم العقار في زر بلدي XAML حتى الآن، ولكن يبدو أنه لا يدخل حتى في STERTER. لقد كنت أبحث عن الكثير عبر الإنترنت دون نجاح. لذلك ربما أنا أفتقد شيئا.

شكرا مقدما على مساعدتكم، بوريس

هل كانت مفيدة؟

المحلول

أيضا، لا يستخدم WPF STERTER المتوفرة لتعيين خاصية، فهو يفعل ذلك مباشرة.

طريقة تصحيح الأخطاء عندما تقوم WPF بتعيين خاصية هي إضافة رد اتصال عندما يتم تعيين الخاصية، مثل ذلك.

public static readonly DependencyProperty BackProp =
    DependencyProperty.Register(
        "BackTest",
        typeof(ImageSource),
        typeof(StateImageButton),
        new FrameworkPropertyMetadata(OnBackChanged));

private static void OnBackChanged(
    DependencyObject d, 
    DependencyPropertyChangedEventArgs e)
{
    var sender = (StateImageButton)d; // Put a breakpoint here
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top