Pregunta

Estoy trabajando en un proyecto de WPF, y mi intención es hacer dos RadioButtons específicos alteran las propiedades de otro componente especificado. Pero por ahora, sólo estoy tratando de almacenar una cadena dentro de la RadioButton.

Para ello, he creado una clase de comportamiento:

    public class AdjustBehavior : Behavior<RadioButton>
{

Con esta propiedad:

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

Y estos captadores y definidores:

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

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

En el lado XAML, hice esto:

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

Cuando int: es el espacio de nombres a Interaction.Behaviors y yo: es el espacio de nombres de la clase AdjustBehavior. Pero cada vez que inicio mi solicitud, LabelContent se establece en NULL. ¿Por qué?

Yo no publicar el resto de mi clase de comportamiento, porque creo que no importará, pero lo haré si es necesario.

Gracias de antemano.

Clark

¿Fue útil?

Solución

Se adjunta la propiedad requiere objetivo que se va a decorar. En su caso ese objetivo es botón de radio, por lo que debe utilizar

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

Si necesita crear sólo la propiedad de AdjustBehavior, usar propiedad de dependencia normal, no se adjunta.

Otros consejos

Debe utilizar DependencyProperty.Register, no RegisterAttached. Esto no está siendo utilizado como una propiedad adjunta, sino más bien una propiedad de dependencia estándar.

LabelContent debe ser o bien una propiedad adjunta en RadioButton o propiedad de dependencia en AdjustBehavior.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top