0

私は WPF プロジェクトに取り組んでいます。私の意図は、2 つの特定の RadioButtons が別の指定されたコンポーネントのプロパティを変更することです。しかし今のところ、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 に設定されます。なんで?

Behavior クラスの残りの部分は投稿しませんでした。それは問題ではないと思うからですが、必要に応じて投稿します。

前もって感謝します。

クラーク

4

3 に答える 3

1

RegisterAttached ではなく、DependencyProperty.Register を使用する必要があります。これは、添付プロパティとしてではなく、標準の依存関係プロパティとして使用されています。

于 2010-07-01T20:43:32.370 に答える
0

LabelContent は、 RadioButton の添付プロパティまたは AdjustBehavior の依存関係プロパティのいずれかである必要があります。

于 2010-07-01T20:47:07.993 に答える
0

添付プロパティには、ターゲットを添付する必要があります。あなたの場合、ターゲットはラジオボタンなので、使用する必要があります

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

AdjustBehavior のプロパティを作成するだけの場合は、アタッチされていない通常の依存関係プロパティを使用します。

于 2010-07-01T20:44:01.667 に答える