Я пытаюсь создать приложение, используя шаблон MVVM в WPF. У меня есть следующее как часть представления ( FooView )
<ComboBox
ItemsSource="{Binding Foos}"
SelectedItem="{Binding Foo}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Converter= {StaticResource EnumDescriptionValueConverter }}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
Где EnumDescriptionValueConverter помогает мне отобразить атрибут Description в перечислении , Вот метод конвертации, который я использую:
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return ((Enum)value).GetDescription();
}
Затем я использую шаблон данных для визуализации этого представления с использованием этого Xaml
<ListBox ItemsSource="{Binding FooCollection.CollectionView}">
<ListBox.ItemTemplate>
<DataTemplate>
<local:FooView/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Где FooCollection - это FilterObservableCollection. Все работает хорошо и отображает описание Enum в поле со списком, как и ожидалось.
Моя цель - иметь возможность добавлять и удалять элементы из коллекции FooCollection. Однако, когда я вызываю FooCollection.Remove (aFoo), метод Convert в EnumDescriptionValueConverter вызывается с пустой строкой (вместо параметра value), что вызывает исключение.
Есть идеи, почему этот метод вызывается с пустой строкой? Пожалуйста, также предоставьте любые предложения / альтернативные способы реализации этого go.
Спасибо