DependencyPropert не задан из XAML с DynamicResource в качестве параметра
-
06-09-2019 - |
Вопрос
Я пытаюсь разработать пользовательский элемент управления кнопкой с тремя состояниями, и до сих пор я использовал 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
}