Non DependencyPropert set da XAML con DynamicResource come parametro
-
06-09-2019 - |
Domanda
Sto cercando di sviluppare un controllo utente pulsante di tre stati personalizzati e finora ho usato CTF per impostare le proprietà.
Ma vorrei cambiare questo per essere utilizzando il sistema di proprietà WPF con PropertiesDependencies.
Purtroppo non riesco a farlo funzionare, quando ho impostato la proprietà dal mio XAML (padre) utilizzando un DynamicResource, il valore non è impostato.
<common:StateImageButton x:Name="story_buttonRecord" BackTest="{DynamicResource backTest}" />
Ecco il codice che ho in mio controller pulsante:
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());
Non ho nemmeno utilizzare la proprietà nel mio tasto XAML ancora, ma a quanto pare non ha nemmeno entrare nel Setter. Ho cercato un sacco online senza successo. Quindi forse mi manca qualcosa.
Grazie in anticipo per il vostro aiuto, Boris
Soluzione
Inoltre, WPF non utilizza il setter fornito per impostare una proprietà, lo fa direttamente.
Il modo di debug quando WPF imposta una proprietà è quello di aggiungere un callback per quando la proprietà è impostata, in questo modo.
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
}