我正在研究一个WPF项目,我的目的是让两个特定的RadioButtons改变另一个指定Component的属性。但就目前而言,我只是想在RadioButton中存储一个String。
为此,我创建了一个行为类:
public class AdjustBehavior : Behavior<RadioButton>
{
使用此属性:
public static DependencyProperty AdjustLabelContentProperty =
DependencyProperty.RegisterAttached("LabelContent", typeof(String), typeof(AdjustBehavior),
new FrameworkPropertyMetadata(null,
FrameworkPropertyMetadataOptions.Inherits));
这些吸气者和制定者:
public static String GetLabelContent(RadioButton tb)
{
return (String)tb.GetValue(AdjustLabelContentProperty);
}
public static void SetLabelContent(RadioButton tb, String value)
{
tb.SetValue(AdjustLabelContentProperty, value);
}
在XAML方面,我这样做了:
<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>
其中int:是Interaction.Behaviors的名称空间,i:是AdjustBehavior类的名称空间。但每当我启动我的应用程序时,LabelContent都设置为null。为什么呢?
我没有发布我的其他行为类,因为我认为这无关紧要,但如果有必要我会做。
先谢谢。
克拉克
答案 0 :(得分:1)
您应该使用DependencyProperty.Register,而不是RegisterAttached。这不是用作附加属性,而是用作标准依赖属性。
答案 1 :(得分:0)
附属物需要附加目标。在您的情况下,目标是单选按钮, 所以你应该使用
<RadioButton i:AdjustBehavior.LabelContent="Apple" ... />
如果您只需要创建AdjustBehavior的属性,请使用普通的依赖属性,而不是附加。
答案 2 :(得分:0)
LabelContent应该是RadioButton上的附加属性或者AdjustBehavior上的依赖属性。