XAML 取消检查后,将清除与Radiocommunication Issues的绑定

hyrbngr7  于 2023-09-28  发布在  其他
关注(0)|答案(1)|浏览(82)

我有一个radioButton组,每个Button都绑定到一个Enum属性

<RadioButton Name="rbFixedDiscount" IsChecked="{Binding Path=DiscountType, Mode=TwoWay, Converter={StaticResource EnumConverter},ConverterParameter=Fixed, UpdateSourceTrigger=PropertyChanged}" >Fixed:</RadioButton>

<RadioButton Name="rbPercentDiscount" Grid.Row="1" IsChecked="{Binding Path=DiscountType, Mode=TwoWay, Converter={StaticResource EnumConverter},ConverterParameter=Percent, UpdateSourceTrigger=PropertyChanged}">Percent:</RadioButton>

<RadioButton Name="rbFreeNightsDiscount" Grid.Row="2" IsChecked="{Binding Path=DiscountType, Mode=TwoWay, Converter={StaticResource EnumConverter},ConverterParameter=FreeNights, UpdateSourceTrigger=PropertyChanged}">Free Nights:</RadioButton>

每当我在UI中来回点击时,后面的属性只有在我点击一个新的RB时才会更新,如果我点击其中一个按钮(所以我让它选中->未选中->选中),绑定后面的属性不会刷新,它的绑定已经被清除了,我想这是因为ClearValue()在取消选中和Item时被调用。无论如何,我可以保持绑定活着,而点击来回。

mzmfm0qo

mzmfm0qo1#

这是一个带有单选按钮的known and annoying bug。幸运的是,有一些变通方法,这里有一些我见过的:
1.将列表框重新设计为单选按钮并使用它。
1.在控件模板中声明绑定。(link
1.将每个单选按钮放在不同的组中,并通过值转换器控制其checked/unchecked属性。(link
希望其中一个解决方案能为您服务!

相关问题