WPF - 依赖项属性错误

时间:2010-07-01 20:35:37

标签: wpf xaml dependency-properties attachedbehaviors custom-properties

我正在研究一个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。为什么呢?

我没有发布我的其他行为类,因为我认为这无关紧要,但如果有必要我会做。

先谢谢。

克拉克

3 个答案:

答案 0 :(得分:1)

您应该使用DependencyProperty.Register,而不是RegisterAttached。这不是用作附加属性,而是用作标准依赖属性。

答案 1 :(得分:0)

附属物需要附加目标。在您的情况下,目标是单选按钮, 所以你应该使用

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

如果您只需要创建AdjustBehavior的属性,请使用普通的依赖属性,而不是附加。

答案 2 :(得分:0)

LabelContent应该是RadioButton上的附加属性或者AdjustBehavior上的依赖属性。