我有一个非常复杂的UI问题涉及两组RadioButtons
。
在任何给定时间,只有一组可以启用。但是,每个组都可以使用不同的已选中(已选中)按钮。
这些RadioButtons
都会影响相同的source属性,该属性存储一个介于1到5之间的整数值。但是,我只想在RadioButton
为RadioButtons
时将新值传播到source属性已启用且已选中。
由于用户界面允许已禁用 RadioButton
已选中,因此在已选中 {{时,应更新源属性1}} 重新启用。
这是展示UI布局的图像:
(组1已启用,框1已选中;组2已禁用)
现在,这最初似乎是IMultiValueConverter
的工作,但是有一些错综复杂使得这个相当复杂:
IMultiValueConverter
不允许将多个目标属性转换为一个源属性。由于上述看似矛盾的约束,使用IMultiValueConveter
没有意义。这是因为ConvertBack
方法只允许1个目标属性;源属性值是结果。
对于我的方案,RadioButton.IsEnabled
和RadioButton.IsChecked
是必须转换为整数值的两个目标属性,我希望将其作为ConverterParameter
传递。
上图中的数据模型有两个值得注意的属性(并且不应该有更多):
RadioButton
对应的整数) 那么,在这样的情况下我该怎么办?我的目标是只修改应用程序的视图组件。
编辑:RadioButtons
的XAML:
<RadioButton Name="Group1" GroupName="OuterGroup" IsChecked="True">
<DockPanel>
<TextBlock DockPanel.Dock="Top" Text="Group 1"/>
<StackPanel IsEnabled="{Binding RelativeSource={RelativeSource AncestorType={x:Type RadioButton}}, Path=IsChecked}" Orientation="Horizontal">
<RadioButton Content="1" GroupName="Group1" />
<RadioButton Content="2" GroupName="Group1" />
<RadioButton Content="3" GroupName="Group1" />
<RadioButton Content="4" GroupName="Group1" />
<RadioButton Content="5" GroupName="Group1" />
</StackPanel>
</DockPanel>
</RadioButton>
<!--Group2 is the same...-->
<小时/>
在我的计划中,有3个外RadioButtons
。每个RadioButton
对应一种情绪:快乐,悲伤或无动于衷。数字1到5用于识别情绪的快乐或悲伤;描述冷漠的强度是没有意义的(部分悲伤,但更快乐,表明情绪类型应该是幸福的,而不是无动于衷的。)
话虽如此,真实数据模型中有两个属性:
也许这可以更深入地了解我为什么要将多个目标绑定到单个源。 ;)