在项目控件中,我已动态绑定单选按钮列表。每个单选按钮都具有与'IsChecked'的结合。和' Group'来自View Model。
在db级别的某些特定情况下,Ischecked对于同一组中的多个单选按钮都是如此。 在这种情况下,检查同一组中的所有单选按钮。当通过绑定检查其他无线电时,不会取消选中其他单选按钮。
<ItemsControl DataContext="{Binding}" ItemsSource="{Binding TabsList,UpdateSourceTrigger=PropertyChanged}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ContentControl Margin="5">
<RadioButton GroupName="test" IsChecked="{Binding Checked}" Content="{Binding _Header}"></RadioButton>
</ContentControl >
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
如果我在绑定后手动检查它的工作正常。
提前感谢您的回复。
答案 0 :(得分:1)
您的问题是由RadioButton
属性设置的顺序引起的。
在这种情况下(类似于你的情况):
<RadioButton IsChecked="{Binding IsChecked1}" GroupName="{Binding GroupName}" />
<RadioButton IsChecked="{Binding IsChecked2}" GroupName="{Binding GroupName}" />
在绑定IsChecked
属性之前调用GroupName
属性的绑定。因此,当设置IsChecked
属性时,仍然会取消设置属于同一GroupName
的{{1}}属性。这意味着无法应用RadioButton
机制。
只需颠倒您在以下位置声明这两个属性的顺序:
GroupName
并且一切都会正常工作,因为设置<RadioButton GroupName="{Binding GroupName}" IsChecked="{Binding IsChecked1}" />
<RadioButton GroupName="{Binding GroupName}" IsChecked="{Binding IsChecked2}" />
属性后,IsChecked
已经知道其组名是什么。
我希望它有所帮助。