Я новичок в WPF, поэтому, вероятно, это что-то очень основное, что я забываю делать, но я не вижу, что это такое.WPF ComboBox не меняет выбранный элемент
У меня есть окно со списком, которое отображает некоторые данные, я хочу, чтобы пользователь выбирал категорию в этом поле со списком. Он работает частично. В окне отображается сводка, начинающаяся без выбора, затем пользователь выбирает элемент, и он установлен, но если пользователь пытается перейти на другой элемент, ничего не работает, он сохраняет исходный выбранный элемент.
Вот мне код:
[Категория класс]
public class Category {
public long CategoryId { get; set; }
public string Name { get; set; }
public Category MotherCategory { get; set; }
public ICollection<Category> Categories { get; set; }
public int Align { get; set; }
}
[ComboBox XAML]
<ComboBox Grid.Column="1" x:Name="motherCategoryComboBox" Margin="0,6,12,1"
IsSynchronizedWithCurrentItem="True">
<ComboBox.Resources>
<converter:LeftMarginConverter x:Key="LeftMarginConverter" />
</ComboBox.Resources>
<ComboBox.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Path=Categories}">
<TextBlock Text="{Binding Path=Name}" Margin="{Binding Path=Align, Converter={StaticResource LeftMarginConverter}}" />
</HierarchicalDataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
[код-за окна файла]
public CategoryWindow()
{
InitializeComponent();
db = new JaspeContext();
categorieslist = db.Categories.ToList();
motherCategoryComboBox.ItemsSource = categorieslist;
Title = "Add category";
}
[Преобразователь]
public class LeftMarginConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
double leftMargin = double.Parse(value.ToString());
if (leftMargin != 1)
leftMargin = leftMargin * 9;
return new Thickness(leftMargin, 0, 0, 0);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new Exception("The method or operation is not implemented.");
}
}
Нужна ваша помощь. Это делает меня сумасшедшим!
Спасибо!
Я не устанавливаю DataContext, я передаю List прямо к свойству ItemSource в поле со списком. –
Alaor
Простите, я принял ваш ответ, но я обнаружил, что происхождение поведения было более неясным. Я переопределил метод Equals категории, а затем он вызывал странные вещи в combobox. – Alaor
И ps: Я хочу убить себя. – Alaor