2016-09-27 75 views
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被調用並失敗(轉換異常被拋出,但目標類型是正確的類型)。

回答

0

我用混合行爲解決了它。所有的轉換器邏輯都在那裏完成,我有更多的可能性。

<i:Interaction.Behaviors> 
    <behavior:EnumFlagsBehavior EnumValue="{Binding CommunicationSystemEntity.TlsVersion, Mode=TwoWay}" NoneValue="{x:Static model:TlsVersion.None}" AllValue="{x:Static model:TlsVersion.All}" /> 
</i:Interaction.Behaviors>