我有兩個綁定到同一屬性的單選按鈕。單選按鈕有兩個轉換器。但第二個複選框的轉換隻發生在第一次。代碼中是否有錯誤?單選按鈕無法工作的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