Я связываю комбинированный список (который является частью шаблона элемента списка) с перечислением, выбранный элемент привязывается к коллекции, которая связана со списком.
Я использую конвертер для некоторой логики.
Проблема в том, что ConvertBack не вызывается при запуске, а только когда я повторно выбираю элемент в выпадающем списке.
Мне нужно, чтобы он также вызывался при старте.
public enum FullEnum
{
Apple,
Banana,
Pear
}
<Window.Resources>
<local:EnumConverter x:Key="enumConverter"/>
<ObjectDataProvider x:Key="DataT"
MethodName="GetValues"
ObjectType="{x:Type sys:Enum}">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="local:FullEnum" />
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="190*" />
<RowDefinition Height="71*" />
</Grid.RowDefinitions>
<ListBox Name="list1" Margin="0,0,0,37">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Path=Label}"></TextBlock>
<ComboBox Height="23" Width="90"
ItemsSource="{Binding Source={StaticResource DataT}}"
SelectedValue="{Binding Path=Oped, Converter={StaticResource enumConverter}}">
</ComboBox>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
List<Item1> list = new List<Item1>();
public Window1()
{
InitializeComponent();
list.Add(new Item1 { Label="label1" });
list.Add(new Item1 { Label = "label2" });
list.Add(new Item1 { Label = "label3" });
list1.ItemsSource = list;
}
public class Item1
{
public FullEnum Oped { get; set; }
public string Label { get; set; }
}
public class EnumConverterr : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
//some code
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if ((int)value != 0)
return (EnumSuperior)value;
return (EnumSuperior)7;
}
}