WPF, Исключение при использовании конвертера для Enum Description - PullRequest
0 голосов
/ 28 января 2020

Я пытаюсь создать приложение, используя шаблон 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.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...