0
我有一個telerik RadAutoCompleteBox來顯示/選擇枚舉標誌和綁定的轉換器。但它只適用於綁定到目標而不是回到屬性。 ConvertBack方法只是不被調用。將標誌枚舉綁定到控件並返回枚舉屬性
WPF:
<telerik:RadAutoCompleteBox x:Name="RadAutoCompleteBox" FilteringBehavior="{StaticResource EmptyTextFilteringBehavior}" ItemsSource="{Binding Source={local:EnumBindingSource {x:Type model:FlagEnum}}}" SelectedItems="{Binding Entity.FlagEnum, Mode=TwoWay, Converter={StaticResource ListToFlagEnumConverter}}" />
轉換器:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value != null)
{
Type type = value.GetType();
if (typeof(Enum).IsInstanceOfType(value))
{
string concatenatedEnum = ((Enum)value).ToString();
ObservableCollection<Enum> enumList = new ObservableCollection<Enum>();
foreach (string item in concatenatedEnum.Split(','))
{
enumList.Add((Enum)Enum.Parse(type, item));
}
return enumList;
}
}
return Binding.DoNothing;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
ObservableCollection<Enum> enumList = (ObservableCollection<Enum>)value;
string enumString = String.Join<object>(",", enumList);
return Enum.Parse(targetType, enumString);
}
編輯:我試過到目前爲止
使用的SelectedItem [TowWay]和SelectedItems [單向]:現在ConvertBack得到稱爲,但沒有列表將被排除,並且枚舉輸入未正確顯示。選擇項目[TowWay]和SelectedItems [TowWay]:ConvertBack被調用並失敗(轉換異常被拋出,但目標類型是正確的類型)。