Я столкнулся с проблемой, когда несколько комбинаций, которые связаны с перечислениями в моей модели, не работают должным образом.Для начала позвольте мне сказать вам, что у меня есть 2 области моего приложения, где можно манипулировать enum.Для ясности / простоты, давайте просто скажем, что есть одинаковые виды слева и справа и результаты / сводка в центре.Когда я устанавливаю значение в одном из представлений, оно устанавливает значение с помощью ViewModel для Модели, как было спроектировано, но комбо в представлении на противоположной стороне (опять же просто для ясности / простоты), похоже, не обновилось,Он должен был выбрать соответствующую строку / элемент, но это не так.Ниже приведены фрагменты кода, который я сейчас использую:
//Definition of Enum:
public enum eNumericAndDateOperator
{ GreaterThan, GreaterThanOrEqualTo, Equals, LessThanOrEqualTo, LessThan, Between, Ignore }
//XAML of Combo in View(s):
<ComboBox>
<ComboBoxItem Content="" IsSelected="{Binding Path=SelectedOperator, Mode=TwoWay, Converter={StaticResource EnumConverter}, ConverterParameter=Ignore}" />
<ComboBoxItem Content="<" IsSelected="{Binding Path=SelectedOperator, Mode=TwoWay, Converter={StaticResource EnumConverter}, ConverterParameter=LessThan}" />
<ComboBoxItem Content="<=" IsSelected="{Binding Path=SelectedOperator, Mode=TwoWay, Converter={StaticResource EnumConverter}, ConverterParameter=LessThanOrEqualTo}" />
<ComboBoxItem Content="=" IsSelected="{Binding Path=SelectedOperator, Mode=TwoWay, Converter={StaticResource EnumConverter}, ConverterParameter=Equals}" />
<ComboBoxItem Content=">=" IsSelected="{Binding Path=SelectedOperator, Mode=TwoWay, Converter={StaticResource EnumConverter}, ConverterParameter=GreaterThan}" />
<ComboBoxItem Content=">" IsSelected="{Binding Path=SelectedOperator, Mode=TwoWay, Converter={StaticResource EnumConverter}, ConverterParameter=GreaterThanOrEqualTo}" />
<ComboBoxItem Content="Between" IsSelected="{Binding Path=SelectedOperator, Mode=TwoWay, Converter={StaticResource EnumConverter}, ConverterParameter=Between}" />
</ComboBox>
//Enum Converter code
public class EnumToBoolConverter : IValueConverter
{
#region Methods
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null || parameter == null)
return value;
return value.ToString() == parameter.ToString();
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null || parameter == null)
return value;
return Enum.Parse(targetType, parameter.ToString(), true);
}
#endregion Methods
}
EnumConverter - ваш базовый класс конвертера Enum в Bool (и да с определенным ConvertBack).
Должен ли я использовать SelectedИндекс на комбо вместо?Я действительно не могу загрузить перечисление как ItemSource комбо через EnumToIEnumerableConverter или что-то еще, потому что я хочу настроить видимый текст для каждого элемента ...