Domanda

Sto lavorando su un progetto WPF, e la mia intenzione è quella di fare due RadioButtons specifici alterano le proprietà di un altro componente specificato. Ma per ora, sto solo cercando di memorizzare una stringa all'interno del RadioButton.

Per questo, ho creato una classe di comportamento:

    public class AdjustBehavior : Behavior<RadioButton>
{

Con questa proprietà:

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

E questi getter e setter:

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

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

Sul lato XAML, ho fatto questo:

    <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>

Dove int: è lo spazio dei nomi per Interaction.Behaviors e ho: è lo spazio dei nomi per la classe AdjustBehavior. Ma ogni volta che comincio la mia domanda, LabelContent è impostata su null. Perché?

non ho postato il resto della mia classe comportamento, perché penso che non importa, ma lo farò, se necessario.

Grazie in anticipo.

Clark

È stato utile?

Soluzione

proprietà associata richiede obiettivo da allegare al. Nel tuo caso che l'obiettivo è pulsante di scelta, così si dovrebbe usare

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

Se avete bisogno di creare solo proprietà di AdjustBehavior, utilizzare normale proprietà di dipendenza, non collegato.

Altri suggerimenti

Si dovrebbe usare DependencyProperty.Register, non RegisterAttached. Questo non viene utilizzato come proprietà associata, ma piuttosto una proprietà di dipendenza standard.

LabelContent dovrebbe essere sia una proprietà attaccato sulla RadioButton o proprietà di dipendenza in AdjustBehavior.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top