繁体   English   中英

WPF触发器不起作用

[英]WPF Trigger not working

我正在尝试使用triggers来修改控件的属性。我有一个RadioButtonBorder ,我想在选中RadioButton时修改Border Background 所以这是我的代码:

<Border BorderBrush="{DynamicResource MaterialDesignDivider}">
     <RadioButton IsChecked="{Binding Erase_IsSelected}" Content="E">
         <RadioButton.Resources>
              <Style TargetType="{x:Type RadioButton}">
                  <Style.Triggers>
                       <Trigger Property="IsChecked" Value="True">
                            <Setter Property="Background" Value="{DynamicResource MaterialDesignSelection}" />
                       </Trigger>
                  </Style.Triggers>
              </Style>
         </RadioButton.Resources>
     </RadioButton>
</Border>

这似乎不起作用,应该如何解决? 谢谢!

使用绑定到RadioButtonIsChecked属性的Border Style

<Border BorderBrush="{DynamicResource MaterialDesignDivider}">
    <Border.Style>
        <Style TargetType="Border">
            <Style.Triggers>
                <DataTrigger Binding="{Binding IsChecked, ElementName=rb}" Value="True">
                    <Setter Property="Background" Value="{DynamicResource MaterialDesignSelection}" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Border.Style>
    <RadioButton x:Name="rb" IsChecked="{Binding Erase_IsSelected}" Content="E" />
</Border>

RadioButton样式不能更改Border的属性。

在您的xaml中添加OnChecked事件:

<RadioButton Checked="Radiobutton_OnChecked" Content="E">
      <RadioButton.Resources>
          <Style TargetType="{x:Type RadioButton}">
               <Style.Triggers>
                     <Trigger Property="IsChecked" Value="True">
                          <Setter Property="Background" Value="{DynamicResource MaterialDesignSelection}" />
                     </Trigger>
               </Style.Triggers>
          </Style>
      </RadioButton.Resources>
 </RadioButton>

这将在.cs中为您创建一个函数,如下所示,您可以在其中更改背景:

private void Radiobutton_OnChecked(object sender, RoutedEventArgs e)
{
    RadioButton rdb = (RadioButton) sender;

    rdb.Background = new SolidColorBrush(Colors.Green);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM