DependencyPropert не установлен из XAML с DynamicResource в качестве параметра - PullRequest
1 голос
/ 27 мая 2009

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

К сожалению, мне не удается заставить его работать, когда я устанавливаю свойство из моего 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, но оно, по-видимому, даже не входит в Setter. Я искал много онлайн без успеха. Так что, может быть, я что-то упустил.

Заранее спасибо за помощь, Boris

1 Ответ

1 голос
/ 27 мая 2009

Кроме того, 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
}
...