Question

Je travaille sur un projet WPF, et mon intention est de faire deux RadioButtons spécifiques de modifier les propriétés d'un autre composant spécifié. Mais pour l'instant, je suis juste essayer de stocker une chaîne dans la RadioButton.

Pour cela, je l'ai créé une classe de comportement:

    public class AdjustBehavior : Behavior<RadioButton>
{

Avec cette propriété:

        public static DependencyProperty AdjustLabelContentProperty =
        DependencyProperty.RegisterAttached("LabelContent", typeof(String), typeof(AdjustBehavior),
            new FrameworkPropertyMetadata(null,
    FrameworkPropertyMetadataOptions.Inherits));

Et ces accesseurs:

       public static String GetLabelContent(RadioButton tb)
    {
        return (String)tb.GetValue(AdjustLabelContentProperty);
    }

    public static void SetLabelContent(RadioButton tb, String value)
    {
        tb.SetValue(AdjustLabelContentProperty, value);
    }

Du côté XAML, je l'ai fait:

    <RadioButton Content="Banana" Height="16" HorizontalAlignment="Left" Margin="30,216,0,0" Name="radioButton1" VerticalAlignment="Top" GroupName="a" IsThreeState="False" IsChecked="True" Checked="radioButton1_Checked" >
        <int:Interaction.Behaviors>
            <i:AdjustBehavior LabelContent="Apple" />
        </int:Interaction.Behaviors>
    </RadioButton>

Où int: est l'espace de noms Interaction.Behaviors et i: est l'espace de noms à la classe AdjustBehavior. Mais chaque fois que je commence ma demande, LabelContent est définie sur null. Pourquoi?

Je n'ai pas afficher le reste de ma classe de comportement parce que je pense qu'il ne sera pas question, mais je le ferai si nécessaire.

Merci à l'avance.

Clark

Était-ce utile?

La solution

propriété Attached nécessite cible attaché. Dans votre cas, cette cible est le bouton radio, vous devez donc utiliser

<RadioButton i:AdjustBehavior.LabelContent="Apple" ... />

Si vous devez simplement créer propriété de AdjustBehavior, utilisez la propriété de dépendance normale, pas attaché.

Autres conseils

Vous devez utiliser DependencyProperty.Register, non RegisterAttached. Ce n'est pas utilisé comme une propriété attachée, mais plutôt une propriété de dépendance standard.

LabelContent doit être soit une propriété attachée sur RadioButton ou propriété de dépendance sur AdjustBehavior.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top