我有一個簡單的ComboBox
,它有一些簡單的值。我試圖用我的模型上的枚舉屬性做2路綁定。WPF ComboBox雙向綁定
<ComboBox d:LayoutOverrides="Height" Grid.Column="1" SelectedItem="{Binding SortType, Converter={StaticResource sortSelect}, Mode=TwoWay}">
<ListBoxItem Content="Ascending" Tag="Ascending"/>
<ListBoxItem Content="Descending" Tag="Descending"/>
<ListBoxItem Content="Absolute Ascending" Tag="AbsoluteAscending"/>
<ListBoxItem Content="Absolute Descending" Tag="AbsoluteDescending" />
</ComboBox>
這裏是我的ValueConverter
public class RdiSortMatchConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var val = (RdiSort) value;
switch (val)
{
case RdiSort.Ascending:
return "Ascending";
case RdiSort.Descending:
return "Descending";
case RdiSort.AbsoluteAscending:
return "Absolute Ascending";
case RdiSort.AbsoluteDescending:
return "Absolute Descending";
default:
throw new ArgumentOutOfRangeException();
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return (RdiSort) Enum.Parse(typeof (RdiSort), (string) ((ListBoxItem) value).Tag);
}
}
的ConvertBack
方法工作正常,並基於ListBoxItem
的Tag
值我的模型更新,但我不能獲得初始Enum
值來選擇正確的ListBoxItem
什麼是實現此目標的最佳方式,或者是否有更好的綁定方法?Enums
(考慮到我需要自定義d爲每個Enum
賦值。
見這樣的問題:[在WPF數據綁定一個枚舉屬性組合框] (http://stackoverflow.com/questions/58743/databinding-an-enum-property-to-a-combobox-in-wpf) – 2010-11-22 17:04:33