为什么所有的xaml单选按钮都被检查,即使它在同一组中?

时间:2018-01-18 07:23:32

标签: wpf xaml

在项目控件中,我已动态绑定单选按钮列表。每个单选按钮都具有与'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>

如果我在绑定后手动检查它的工作正常。

提前感谢您的回复。

1 个答案:

答案 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已经知道其组名是什么。

我希望它有所帮助。