0

我正在WPF項目上工作,我的意圖是讓兩個特定的RadioButton改變另一個指定組件的屬性。但現在,我只是想在RadioButton中存儲一個String。WPF - 依賴屬性錯誤

對於這一點,我創建了一個行爲類:

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。爲什麼?

我沒有發佈我的行爲類的其餘部分,因爲我認爲它沒有關係,但我會做必要的。

在此先感謝。

克拉克

回答

0

附加屬性需要附加目標。你的情況是目標單選按鈕, 所以如果你只是需要創建AdjustBehavior的財產,用一般的依賴屬性,沒有連接你應該使用

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

+0

有道理,非常感謝!現在正在工作 – 2010-07-01 20:48:00

1

你應該使用DependencyProperty.Register,不RegisterAttached。這不是用作附加屬性,而是用作標準依賴屬性。

+0

非常感謝,解決了我的問題 – 2010-07-01 20:47:42

0

LabelContent應該是RadioButton上的附加屬性或AdjustBehavior上的依賴項屬性。