C# RadioButton检查事件上的文本框文本绑定

C# RadioButton检查事件上的文本框文本绑定,c#,wpf,xaml,C#,Wpf,Xaml,我正在尝试将文本框文本绑定到单选按钮检查事件: [ 我想做的是:选中“SAV”或“HORS电路”或“AUCUNE”单选按钮,然后“Adr Mac”文本框变为空,带有以下Xaml代码: <TextBox x:Name="AdrMac_TxtBox"> <TextBox.Style> <Style TargetType="{x:Type TextBox}"> <Setter Prop

我正在尝试将
文本框
文本绑定到
单选按钮
检查事件:

[

我想做的是:选中“SAV”或“HORS电路”或“AUCUNE”单选按钮,然后“Adr Mac”文本框变为空,带有以下Xaml代码:

<TextBox x:Name="AdrMac_TxtBox">
   <TextBox.Style>
      <Style TargetType="{x:Type TextBox}">
         <Setter Property="BorderBrush" Value="Black"/>
         <Setter Property="Width" Value="100"/>
         <Setter Property="HorizontalContentAlignment" Value="Left"/>
         <Setter Property="VerticalContentAlignment" Value="Center"/>
         <Setter Property="Padding" Value="5"/>
         <Setter Property="Margin" Value="5"/>
         <Setter Property="HorizontalAlignment" Value="Left"/>
         <Style.Triggers>
            <Trigger Property="IsEnabled" Value="False">
               <Setter Property="Background" Value="LightGray"/>
               <Setter Property="Opacity" Value="0.5"/>
            </Trigger>
            <MultiDataTrigger>
               <MultiDataTrigger.Conditions>
                  <Condition Binding="{Binding Path=IsChecked,ElementName=None_Imprim_Rb}"
                                                           Value="True"/>
                  <Condition Binding="{Binding Path=IsChecked,ElementName=Sav_Rb_Checked}"
                                                           Value="True"/>
                  <Condition Binding="{Binding Path=IsChecked,ElementName=HC_Rb_Checked}"
                                                           Value="True"/>
               </MultiDataTrigger.Conditions>
               <Setter Property="Text" Value="{x:Static sys:String.Empty}"/>
            </MultiDataTrigger>
         </Style.Triggers>
      </Style>
   </TextBox.Style>
</TextBox>


你能告诉我这个代码有什么问题吗?

这里有一个简单的例子,一个文本框有两个触发器,当选择任何一个收音机时,它将清除文本框文本,请注意多个


A仅在满足所有条件时应用设置器

表示当绑定数据满足一组条件时应用属性值或执行操作的触发器

您可以定义多个
DataTrigger
s,每一个都作用于一个条件

<Style.Triggers>
   <!-- ...other tiggers. -->
   <DataTrigger Binding="{Binding Path=IsChecked,ElementName=None_Imprim_Rb}" Value="True">
      <Setter Property="Text" Value="{x:Static sys:String.Empty}"/>
   </DataTrigger>
   <DataTrigger Binding="{Binding Path=IsChecked,ElementName=Sav_Rb_Checked}" Value="True">
      <Setter Property="Text" Value="{x:Static sys:String.Empty}"/>
   </DataTrigger>
   <DataTrigger Binding="{Binding Path=IsChecked,ElementName=HC_Rb_Checked}" Value="True">
      <Setter Property="Text" Value="{x:Static sys:String.Empty}"/>
   </DataTrigger>
</Style.Triggers>

MultiDataTrigger
如果满足所有条件,则执行setter。如果为每个条件定义单独的触发器,则可能会成功。当我运行应用程序时,代码段返回无效的强制转换错误:“return values.cast().Any(value=>value);”@JeanFrançoiscolloombet其中一个值可以是
dependencProperty.UnsetValue
。当属性系统无法确定绑定值时,会设置该值,例如,您引用的控件不存在。请参见此。如果您不解决此问题,可以使用以下命令使转换器忽略它们:
返回值。全部(value=>value!=dependencProperty.UnsetValue)&&values.Cast().Any(value=>value);
。但一定要检查问题。
<Style.Triggers>
   <!-- ...other tiggers. -->
   <DataTrigger Binding="{Binding Path=IsChecked,ElementName=None_Imprim_Rb}" Value="True">
      <Setter Property="Text" Value="{x:Static sys:String.Empty}"/>
   </DataTrigger>
   <DataTrigger Binding="{Binding Path=IsChecked,ElementName=Sav_Rb_Checked}" Value="True">
      <Setter Property="Text" Value="{x:Static sys:String.Empty}"/>
   </DataTrigger>
   <DataTrigger Binding="{Binding Path=IsChecked,ElementName=HC_Rb_Checked}" Value="True">
      <Setter Property="Text" Value="{x:Static sys:String.Empty}"/>
   </DataTrigger>
</Style.Triggers>
public class BooleanOrConverter : IMultiValueConverter
{
   public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
   {
      return values.Cast<bool>().Any(value => value);
   }

   public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
   {
      throw new InvalidOperationException();
   }
}
<TextBox x:Name="AdrMac_TxtBox">
   <TextBox.Resources>
      <local:BooleanOrConverter x:Key="BooleanOrConverter"/>
   </TextBox.Resources>
   <TextBox.Style>
      <Style TargetType="{x:Type TextBox}">
         <!-- ...your setters. -->
         <Style.Triggers>
            <!-- ...other triggers. -->
            <DataTrigger Value="True">
               <DataTrigger.Binding>
                  <MultiBinding Converter="{StaticResource BooleanOrConverter}">
                     <Binding ElementName="None_Imprim_Rb" Path="IsChecked"/>
                     <Binding ElementName="Sav_Rb_Checked" Path="IsChecked"/>
                     <Binding ElementName="HC_Rb_Checked" Path="IsChecked"/>
                  </MultiBinding>
               </DataTrigger.Binding>
               <Setter Property="Text" Value="{x:Static sys:String.Empty}"/>
            </DataTrigger>
         </Style.Triggers>
      </Style>
   </TextBox.Style>
</TextBox>