绑定到单选按钮IsChecked在取消选中后清除

时间:2010-05-13 16:11:57

标签: wpf data-binding xaml wpf-controls

我有一个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时才会更新,如果我单击其中一个按钮(所以我将其选中 - &gt;未选中 - &gt;已检查)该属性绑定后面没有刷新,它的绑定已被清除我认为这是因为取消选中和Item时调用ClearValue()。 无论如何,我可以在来回点击时保持绑定活着。

1 个答案:

答案 0 :(得分:5)

这是一个带有单选按钮的known and annoying bug。幸运的是,有一些解决方法,这里有一些我见过的:

  1. 将列表框重新设为单选按钮,然后使用它。
  2. 在控件模板中声明绑定。 (link
  3. 将每个单选按钮放在不同的组中,并通过值转换器控制其已选中/未选中的属性。 (link
  4. 希望其中一个解决方案适合您!