DependencyPropert не задан из XAML с DynamicResource в качестве параметра

StackOverflow https://stackoverflow.com/questions/913118

Вопрос

Я пытаюсь разработать пользовательский элемент управления кнопкой с тремя состояниями, и до сих пор я использовал CTF для настройки свойств.
Но я хотел бы изменить это, чтобы использовать систему свойств WPF с PropertiesDependencies .

К сожалению, мне не удается заставить это работать, когда я устанавливаю свойство из моего xaml (father) с помощью 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());

Я еще даже не использую это свойство в своем button xaml, но, по-видимому, оно даже не вводится в Установщик.Я много искал в Интернете, но безуспешно.Так что , возможно , я что - то упускаю .

Заранее спасибо за вашу помощь, Борис

Это было полезно?

Решение

Кроме того, WPF не использует предоставленный установщик для установки свойства, он делает это напрямую.

Способ отладки, когда 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