Я разрабатываю проект WPF, и мне нужно заполнить выпадающий список со значениями, присутствующими в перечислении.Преобразование WPF в массив
Я хочу сделать это, реализовав это двойное преобразование (посмотрите на следующий код). Я смог реализовать в одном направлении, глядя на интернет-примеры, но я не мог решить обратное направление.
Моя конкретная цель поясняется моим ответом на @BenRobinson: ComboBox привязан к перечислению и к свойству, которое содержит SelectedItem и называется OpenedResultFilter. Я хочу, чтобы при изменении этого значения свойства combobox обновлял выбранный элемент. Извините за путаницу .. Я не очень опытен с WPF ..
Вы можете мне помочь?
<ComboBox
MinWidth="80"
ItemsSource="{Binding Converter={StaticResource EnumTypeToEnumArrayConverter}, ConverterParameter='Goldbet.GoldbetBackOffice.WPF.Model.ResultValidation.StagingOpenResultValidationFilter, Goldbet.GoldbetBackOffice.WPF.Model', Mode=OneWay}"
SelectedItem="{Binding OpenedResultFilter, Mode=TwoWay}"
HorizontalAlignment="Left"
Margin="1,2,1,2"
DockPanel.Dock="Left"/>
<UserControl.Resources>
<ResourceDictionary>
<Converters:BoolNullableToBoolConverter x:Key="BoolNullableToBoolConverter" />
<Converters:EnumTypeToEnumArrayConverter x:Key="EnumTypeToEnumArrayConverter"/>
public class StagingResultsBatchImportViewModel : WorkspaceViewModel, IHierarchyViewModel
{
private StagingOpenResultValidationFilter _openedResultFilter = StagingOpenResultValidationFilter.Tutti;
public StagingOpenResultValidationFilter OpenedResultFilter
{
get { return _openedResultFilter; }
set
{
if (_openedResultFilter != value)
{
_openedResultFilter = value;
OnPropertyChanged("OpenedResultFilter");
}
}
}
}
public class EnumTypeToEnumArrayConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
Type enumType = Type.GetType((string)parameter);
return Enum.GetValues(enumType).Cast<int>().Select(p => Enum.ToObject(enumType, p));
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
Каким образом вы могли бы вернуться из коллекции в enum? Вы не можете программно добавлять значения в перечисление, оно исправлено. –
Просьба поделиться xaml или кодом, где вы пытаетесь это сделать – Akanksha
Это MVVM или нет? Потому что это не хороший способ заполнения ddls, если это так. –