gpt4 book ai didi

将 DataGridComboBoxColumn ItemsSource 绑定(bind)到 RelativeSource FindAncestor 不起作用

转载 作者:行者123 更新时间:2023-12-04 03:15:50 25 4
gpt4 key购买 nike

我正在尝试使用 WPFToolkit 的 DataGrid 控件(和 C#/.Net 3.5)来显示每条记录的 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')

但是,以下代码按预期工作(正确填充了 ComboBoxes 的下拉列表):
<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 也是如此。一个控件正确绑定(bind),而另一个控件不正确绑定(bind)。

为什么 DataGridComboBoxColumn ItemsSource 不能正确绑定(bind)?

谢谢,


仅供引用, diagnostics定义为 xmlns:diagnostics="clr-namespace:System.Diagnostics;assembly=WindowsBase"

最佳答案

有趣...如果我创建一个包含 ComboBox 的自定义 DataGridColumn 并使用与上面给出的相同的 ItemsSource 绑定(bind)字符串,它就可以工作。

<wpftkit:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox SelectedItem="{Binding Account}" ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type StackPanel}}, Path=DataContext.Accounts}" DisplayMemberPath="Name" />
</DataTemplate>
</wpftkit:DataGridTemplateColumn.CellTemplate>

关于将 DataGridComboBoxColumn ItemsSource 绑定(bind)到 RelativeSource FindAncestor 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3182014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com