Почему это работает именно так:
<DataGridComboBoxColumn Header = "Format"
SelectedItemBinding = "{Binding Format, UpdateSourceTrigger=PropertyChanged}"
ItemsSource = "{Binding Source = {StaticResource with formatenumvalues}}"
IsReadOnly = "False"/>
Вот как это тоже работает:
<DataGridTemplateColumn Header = "Category">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource = "{Binding CategoryList, UpdateSourceTrigger=PropertyChanged}"
SelectedItem = "{Binding Category, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Но не так:
<DataGridComboBoxColumn Header = "Category"
SelectedItemBinding = "{Binding Category, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
ItemsSource = "{Binding CategoryList, UpdateSourceTrigger=PropertyChanged}"
IsReadOnly = "False"/>
Может ли DataGridComboBoxColumn работать только со статическими ресурсами или что-то еще не так? CategoryList здесь — ObservableCollection, Category — обычная строка.
Я пробовал различные варианты привязки, предоставляемые нейронными сетями. Я также пытался найти подобное решение, но ни одно из них не помогло.
@Gilad Waisel Список категорий — это ObservableCollection<string>, а Категория — строка. Visual Studio не выдает никаких ошибок, связанных с этими привязками. Еще я заметил, что ComboBox хоть и меняет значение Категории, но при загрузке окна не отображает то, что там выбрано в данный момент. Являются ли одинаковые строки разными объектами?
Кажется, что решением является использование DataGridTemplateColumn. Вы можете сослаться на предыдущий вопрос:stackoverflow.com/questions/2890156/…





Следующий код работает:
<DataGridComboBoxColumn SelectedValueBinding = "{Binding Category, UpdateSourceTrigger=PropertyChanged}">
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType = "{x:Type ComboBox}">
<Setter Property = "ItemsSource" Value = "{Binding CategoryList}"/>
<Setter Property = "VerticalAlignment" Value = "Center"/>
</Style>
</DataGridComboBoxColumn.ElementStyle>
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType = "{x:Type ComboBox}">
<Setter Property = "ItemsSource" Value = "{Binding CategoryList}"/>
<Setter Property = "VerticalAlignment" Value = "Center"/>
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
«Категория» и «CategoryList» являются свойствами класса элемента.
Большое спасибо. Вы очень помогли. Это именно то решение, которое я искал.
Являются ли «Категория» и «Список категорий» одним и тем же классом? Я предполагаю, что «CategoryList» не повторяется для каждого элемента в DataGrid ItemsSource. Можете ли вы проверить наличие ошибок привязки?