我有一个堆栈面板,有两组(由组名称定义)的radiobuttons。如何仅针对其中一组设置数据触发器?
到目前为止,我尝试使用无效的代码
<UserControl.Resources>
<Style TargetType="RadioButton">
<Style.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="GroupName" Value="MaterialGroup"></Condition>
<Condition Binding="{Binding BooleanProperty}" Value="true"></Condition>
</MultiTrigger.Conditions>
<MultiTrigger.Setters x:Uid="btn2">
<Setter Property="IsChecked" Value="true"></Setter>
</MultiTrigger.Setters>
</MultiTrigger>
</Style.Triggers>
</Style>
</UserControl.Resources>
<RadioButton GroupName="MaterialGroup" Style="{StaticResource AsToggleButton}" Content="{Binding ActualMaterialName}" Margin="0,0,5,0"></RadioButton>
<RadioButton GroupName="MaterialGroup" x:Uid="btn2" Style="{StaticResource AsToggleButton}" Content="{Binding NextMaterialName}" Margin="0,0,5,0"></RadioButton>
<RadioButton GroupName="MaterialGroup" Style="{StaticResource AsToggleButton}" Content="Text" Margin="0,0,5,0" Checked="RadioButton_Checked" Unchecked="RadioButton_Unchecked"></RadioButton>
答案 0 :(得分:1)
首先,当您将Style
元素的RadioButton
属性设置为{StaticResource AsToggleButton}
时,不会应用您的隐式样式。
其次,示例标记中的所有三个RadioButton
元素都属于同一个组。
第三,实际上只能选择单个组中的一个 RadioButton
。这就是首先使用GroupName
的目的。
关于您的实际问题,您只能通过使用带有条件的多数据触发器在“MaterialGroup”中设置IsChecked
的{{1}}属性。
这样可行,即当RadioButton
source属性返回true时,将只选择“MaterialGroup”中的一个单选按钮:
BooleanProperty
<Style x:Key="theStyle" TargetType="RadioButton">
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding GroupName, RelativeSource={RelativeSource Self}}" Value="MaterialGroup"></Condition>
<Condition Binding="{Binding BooleanProperty}" Value="true"></Condition>
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<Setter Property="IsChecked" Value="true"></Setter>
</MultiDataTrigger.Setters>
</MultiDataTrigger>
</Style.Triggers>
</Style>
属于“SomeOtherGroup”的第三个<RadioButton GroupName="MaterialGroup" Content="ActualMaterialName" Style="{StaticResource theStyle}" />
<RadioButton GroupName="MaterialGroup" Content="Binding NextMaterialName" Style="{StaticResource theStyle}" />
<RadioButton GroupName="SomeOtherGroup" Content="Text" Style="{StaticResource theStyle}" />
不会受到影响。