我有一个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时被调用。无论如何,我可以保持绑定活着,而点击来回。
1条答案
按热度按时间mzmfm0qo1#
这是一个带有单选按钮的known and annoying bug。幸运的是,有一些变通方法,这里有一些我见过的:
1.将列表框重新设计为单选按钮并使用它。
1.在控件模板中声明绑定。(link)
1.将每个单选按钮放在不同的组中,并通过值转换器控制其checked/unchecked属性。(link)
希望其中一个解决方案能为您服务!