[英]TextBox Text binding on a RadioButton Check event
I'm trying to bind a TextBox
text on a RadioButton
check event:我正在尝试在
RadioButton
检查事件上绑定TextBox
文本:
[ [
What I want to do is: Ehen the "SAV" or "HORS CIRCUIT" or "AUCUNE" radiobutton are checked, then the "Adr Mac" textbox becomes empty, with this Xaml code:我想要做的是:在选中“SAV”或“HORS CIRCUIT”或“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>
Can you tell me what is wrong with this code ?你能告诉我这段代码有什么问题吗?
Here's a simple example of a TextBox with two triggers, when either radio is selected it'll clear the TextBox text, please note the multiple <DataTrigger>
: Here's a simple example of a TextBox with two triggers, when either radio is selected it'll clear the TextBox text, please note the multiple
<DataTrigger>
:
<TextBox Height="23" Width="120">
<TextBox.Style>
<Style TargetType="{x:Type TextBox}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsChecked, ElementName=rb_One}" Value="True">
<Setter Property="Text" Value="{x:Null}"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding IsChecked, ElementName=rb_Two}" Value="True">
<Setter Property="Text" Value="{x:Null}"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
<RadioButton x:Name="rb_One" Content="RadioButton" />
<RadioButton x:Name="rb_Two" Content="RadioButton" />
A MultiDataTrigger
will only apply setters, when all conditions are met. MultiDataTrigger
将仅在满足所有条件时应用设置器。
Represents a trigger that applies property values or performs actions when the bound data meet a set of conditions .
表示在绑定数据满足一组条件时应用属性值或执行操作的触发器。
You could instead define multiple DataTrigger
s that each act on a single condition.您可以改为定义多个
DataTrigger
,每个都作用于一个条件。
<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>
In case you want to prevent redundant setters, you could create a boolean OR multi-value converter.如果您想防止冗余设置器,您可以创建一个布尔 OR多值转换器。
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();
}
}
Then you can use a DataTrigger
with a MultiBinding
to achieve the same.然后您可以使用带有
MultiBinding
的DataTrigger
来实现相同的效果。
<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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.