我有两个绑定到同一属性的单选按钮。单选按钮有两个转换器。但第二个复选框的转换只发生在第一次。代码中是否有错误?单选按钮无法工作的WPF转换器
<RadioButton Margin="5,1" GroupName="groupValueOrTime" Name="radioButtonTimeDriven" VerticalAlignment="Top" IsChecked="{Binding Path=TriggerType ,Converter={StaticResource dailyTriggerConverter}}" Grid.Column="0" Grid.Row="0" >Time Driven</RadioButton>
<RadioButton Margin="5,1" GroupName="groupValueOrTime" Name="radioButtonValueDriven" VerticalAlignment="Top" Grid.Column="0" Grid.Row="1" IsChecked="{Binding Path=TriggerType,Converter={StaticResource valueDrivenTriggerConverter}}" >Value Driven</RadioButton>
代码:
public class TriggerTypeDailyToBoolProperty:IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
//convert from TriggerType to bool:
int TriggerType=int.Parse(value.ToString());
if (TriggerType == 0 || TriggerType == 1 || TriggerType == 2 || TriggerType == 3 || TriggerType == 4 || TriggerType == 5 || TriggerType == 6)
return true;
else
return false;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
bool isChecked = (bool)value;
return (isChecked? 0: -1);
}
#endregion
}
public class TriggerTypeValueDrivenToBoolProperty : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
//convert from TriggerType to bool:
int TriggerType = int.Parse(value.ToString());
if (TriggerType == 9)
return true;
else
return false;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
bool isChecked = (bool)value;
return (isChecked ? 9 : -1);
}
#endregion
}
我并不清楚你想如何工作,但我尝试了你的代码,它似乎运行良好,所以问题可能是其他问题。你正在执行'INotifyPropertyChanged'并且当你更新'TriggerType'的时候你会抛出'PropertyChanged'吗?在附注中,您可能需要考虑将第一个Converter中的7个比较更改为像if(TriggerType> = 0 && TriggerType <= 6)' – 2011-02-28 21:55:08
k ...可以说我有3个触发器按钮,每个TriggerType值为0,1和9.第一次点击所有3个按钮,单选按钮被正确检查。当我再次点击第一个btn时,它会调用第一个转换器,但不检查第二个转换器。所以当我点击最后一个BTN时,这两个单选按钮都保持未选中状态。 (感谢您纠正代码btw) – batrulz 2011-02-28 23:11:44