2015-04-22 70 views
1

我有一個依賴項屬性,我希望它填充一些單選按鈕的標題時,IsChecked事件爲真。我已經尋找了一種方法來實現這一點,但我迄今爲止看到的都是動畫示例。我知道我需要在該EventTrigger定義內部進行綁定,但它會是什麼樣子?RadioButtons和EventTrigger

  <RadioButton Content="Header1" 
         Margin="4" 
         Foreground="{Binding RelativeSource={RelativeSource Self}, Path=IsChecked, Converter={StaticResource BoolToVisibilityConverter}}"/> 

在它的器isChecked屬性爲true,我想一個辦法來填充我先前定義依賴屬性與它的頭(頭1在這種情況下)

public string HeaderSelected 
    { 
     get { return (string)GetValue(HeaderSelectedProperty); } 
     set { SetValue(HeaderSelectedProperty, value); } 
    } 

    // Using a DependencyProperty as the backing store for HeaderSelected. This enables animation, styling, binding, etc... 
    public static readonly DependencyProperty HeaderSelectedProperty = 
     DependencyProperty.Register("HeaderSelected", typeof(string), typeof(HeaderTestClass), new PropertyMetadata(string.Empty)); 

我想我會嘗試這樣的事情:

 <i:Interaction.Triggers> 
       <i:EventTrigger EventName="IsChecked"> 
          <ei:ChangePropertyAction 
          TargetObject="{Binding}" 
          PropertyName="HeaderSelected" 
          Value="Header1" /> 
       </i:EventTrigger > 
    </i:Interaction.Triggers> 
+0

你可以給你一個你想要達到的樣本嗎? – Sayka

+0

告訴我們你的嘗試 – Muds

回答

1

假設你使用的是MVVM的做法,和你有一個視圖模型支持你的觀點:

你幾乎在那裏使用觸發器。你想利用Checked事件RadioControl的,並用InvokeCommandAction結合起來:

<i:Interaction.Triggers> 
    <i:EventTrigger EventName="Checked"> 
     <i:InvokeCommandAction Command="{Binding UpdateHeaderCommand}" CommandParameter="MyParam"/> 
    </i:EventTrigger> 
</i:Interaction.Triggers> 

在這個例子中的ICommand UpdateHeaderCommand在視圖模型中定義每當無線電控制檢查被調用。我還將一個參數傳遞給了MyParam命令,UpdateHeaderCommand可以使用該參數來識別檢查哪個單選按鈕。

如果你不使用MVVM /的ViewModels,然後另一種方法可能對你的代碼創建一個RadioButton_Checked事件處理後面來處理Checked事件,並有所有的單選按鈕連接到該處理程序:

<RadioButton Name="RadioButton1" GroupName="Group1" Checked="RadioButton_Checked"/> 
<RadioButton Name="RadioButton2" GroupName="Group1" Checked="RadioButton_Checked"/> 

private void RadioButton_Checked(object sender, System.Windows.RoutedEventArgs e) 
{ 
    // Update your header ... 
} 

你將不得不檢查sender找出哪個單選按鈕被選中。