Error de dependencia Propiedades - WPF
-
02-10-2019 - |
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
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.