Я пытаюсь использовать элемент управления DataGrid WPFoolkit (и C # /. Net 3.5) для отображения ComboBox для каждой записи. С помощью приведенного ниже кода ComboBox'ы отображаются, но их раскрывающиеся списки не содержат элементов:
<wpftkit:DataGrid ItemsSource="{Binding TransactionToEdit.SisterTransactions}"
AutoGenerateColumns="False">
<wpftkit:DataGrid.Columns>
<wpftkit:DataGridComboBoxColumn Header="Account" ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type StackPanel}, diagnostics:PresentationTraceSources.TraceLevel=High}, Path=DataContext.Accounts}" DisplayMemberPath="Name"/>
</wpftkit:DataGrid.Columns>
</wpftkit:DataGrid>
Кроме того, в окне вывода Visual Studio отображается следующая ошибка:
System.Windows.Data Error: 4 : Cannot find source for binding with
reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.StackPanel', AncestorLevel='1''.
BindingExpression:Path=DataContext.Accounts; DataItem=null; target element is
'DataGridComboBoxColumn' (HashCode=25733404); target property is
'ItemsSource' (type 'IEnumerable')
Однако следующий код работает должным образом (выпадающие списки ComboBox заполнены правильно):
<ItemsControl ItemsSource="{Binding TransactionToEdit.SisterTransactions}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type StackPanel}}, Path=DataContext.Accounts, diagnostics:PresentationTraceSources.TraceLevel=High}" DisplayMemberPath="Name"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Обратите внимание, что и DataGrid, и ItemsControl имеют идентичные строки ItemsSource. То же самое делают DataGridComboBoxColumn и ComboBox. Один элемент управления связывается правильно, а другой - нет.
Почему источник DataGridComboBoxColumn ItemsSource не связывается должным образом?
Спасибо,
Ben
К вашему сведению, diagnostics
определяется как xmlns:diagnostics="clr-namespace:System.Diagnostics;assembly=WindowsBase"