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

È stato utile?

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
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top