RadioButtons和EventTrigger

时间:2015-04-22 07:59:33

标签: c# wpf

我有一个依赖属性,当IsChecked事件为真时,我希望它填充一些单选按钮的标题。我已经搜索了一种方法来实现这一点,但我迄今为止看到的只是动画示例。我理解我需要在EventTrigger定义中绑定,但它看起来如何?

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

On It的IsChecked属性为true,我想用一种方法用它的标题填充我之前定义的依赖属性(在本例中为Header 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>

1 个答案:

答案 0 :(得分:1)

假设您正在使用MVVM方法,并且您有一个视图模型支持您的视图:

你几乎在使用触发器。您想要使用RadioControl的$('#statistik').dataTable({ "destroy": true, "ajax": include }); 事件,并将其与Checked结合使用:

InvokeCommandAction

在此示例中,只要选中无线电控件,就会调用viewmodel中定义的ICommand <i:Interaction.Triggers> <i:EventTrigger EventName="Checked"> <i:InvokeCommandAction Command="{Binding UpdateHeaderCommand}" CommandParameter="MyParam"/> </i:EventTrigger> </i:Interaction.Triggers> 。我还将一个参数传递给命令UpdateHeaderCommandMyParam可以使用该参数来识别选中的单选按钮。

如果你没有使用MVVM / viewmodel,那么另一种方法可能是在你的代码中创建一个UpdateHeaderCommand事件处理程序来处理RadioButton_Checked事件,并且 all < / strong>您的单选按钮附加到该处理程序:

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 ... } 以确定选中了哪个单选按钮。