0

我正在开发一个 WPF 项目,我的目的是让两个特定的 RadioButtons 更改另一个指定组件的属性。但是现在,我只是想在 RadioButton 中存储一个字符串。

为此,我创建了一个行为类:

    public class AdjustBehavior : Behavior<RadioButton>
{

有了这个属性:

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

这些 getter 和 setter:

       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。为什么?

我没有发布我的行为课程的其余部分,因为我认为这无关紧要,但如果有必要我会这样做。

提前致谢。

克拉克

4

3 回答 3

1

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

于 2010-07-01T20:43:32.370 回答
0

附加属性需要附加目标。在您的情况下,目标是单选按钮,因此您应该使用

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

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

于 2010-07-01T20:44:01.667 回答
0

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

于 2010-07-01T20:47:07.993 回答