【问题标题】:RadioButtons and an EventTriggerRadioButtons 和 EventTrigger
【发布时间】:2015-04-22 17:50:50
【问题描述】:

我有一个依赖属性,当 IsChecked 事件为真时,我希望它填充一些单选按钮的标题。我已经找到了一种方法来实现这一点,但到目前为止我所看到的只是动画示例。我知道我需要在 EventTrigger 定义中进行绑定,但它会是什么样子?

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

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

【问题讨论】:

  • 你能给出一个你想要达到的目标吗?
  • 向我们展示您的尝试

标签: c# wpf


【解决方案1】:

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

您几乎可以使用触发器了。您想利用 RadioControl 的 Checked 事件,并将其与 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 事件,并让您的 all附加到该处理程序的单选按钮:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    • 2021-08-07
    • 2020-10-17
    • 1970-01-01
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多