Я пытаюсь привязать свойство ItemsSource
моего DataGridComboBoxColumn
к свойству моей ViewModel. Я понимаю, что из-за некоторых ограничений это невозможно без использования какого-либо статического списка или обходного пути.
Я выбрал обходной путь. Я пробовал каждый ответ в этом потоке StackOverflow безуспешно, и совсем недавно я попробовал это временное решение с тоже не повезло.
Вот мой XAML в соответствии с моей последней попыткой:
<DataGridComboBoxColumn Header="Action"
SelectedValueBinding="{Binding DISPLAY_ACTION_ID, Mode=TwoWay}"
SelectedValuePath="DISPLAY_ACTION_ID"
DisplayMemberPath="DISPLAY_ACTION_DESC">
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding ActionSource}" />
</Style>
</DataGridComboBoxColumn.ElementStyle>
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding ActionSource}" />
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
Я также попытался настроить привязку ItemsSource
в соответствии с этим потоком, но безуспешно.
Вот мое свойство ViewModel на случай, если это поможет:
public List<DISPLAY_ACTION> ActionSource
{
get
{
return _actionSource;
}
}
Все, что я получаю, - это пустой список значений. Если я поставлю точку останова на получателе свойств, он никогда не сломается, т.е. похоже, что XAML не находит привязку ActionSource
. Мы будем очень благодарны за любую помощь или руководство о том, почему это может не работать.
Изменить - обновлен XAML:
<DataGrid HorizontalAlignment="Stretch"
VerticalAlignment="Top"
SelectionMode="Single"
RowHeaderWidth="20"
AutoGenerateColumns="False"
AlternatingRowBackground="Transparent"
ItemsSource="{Binding DisplayItemsView}">
<DataGrid.Columns>
<DataGridComboBoxColumn Header="Action"
SelectedValueBinding="{Binding DISPLAY_ACTION_ID, Mode=TwoWay}"
SelectedValuePath="DISPLAY_ACTION_ID"
DisplayMemberPath="DISPLAY_ACTION_DESC">
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding DataContext.ActionSource, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}" />
</Style>
</DataGridComboBoxColumn.ElementStyle>
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding DataContext.ActionSource, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}" />
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
</DataGrid.Columns>
</DataGrid>
Ошибка отладки:
System.Windows.Data Ошибка: 4: не удается найти источник для привязки со ссылкой RelativeSource FindAncestor, AncestorType = 'System.Windows.Window', AncestorLevel = '1' '. BindingExpression: Путь = DataContext.ActionSource; DataItem = null; целевой элемент - TextBlockComboBox (Name = ''); целевым свойством является ItemsSource (тип IEnumerable) `
DataGrid.ItemsSource
? - person amnezjak   schedule 13.05.2014DisplayItemsView
,ListCollectionView
изDISPLAY_ITEM
s. - person Sloth Armstrong   schedule 13.05.2014