C# Datagrid中的组合框:缺少值
我打赌这是一个非常容易更新的东西:不是,但我没有在XAML中找到解决方案 我有两个对象:一个ObservableCollection,任务作为Datagrid的ItemsSource。以及字符串s的ObservableCollection,它应该是组合框中的值。 任务的名称绑定到第一列。到目前为止,一切顺利 现在我想在第二列中添加combobox,其中包含一些要选择的参数。 所选内容应绑定到任务的ExecutingCore属性 我想我把DataGridComboxColumn的ItemsSource搞砸了。我如何在这里进行绑定以获得下拉列表中显示的值C# Datagrid中的组合框:缺少值,c#,wpf,data-binding,datagrid,combobox,C#,Wpf,Data Binding,Datagrid,Combobox,我打赌这是一个非常容易更新的东西:不是,但我没有在XAML中找到解决方案 我有两个对象:一个ObservableCollection,任务作为Datagrid的ItemsSource。以及字符串s的ObservableCollection,它应该是组合框中的值。 任务的名称绑定到第一列。到目前为止,一切顺利 现在我想在第二列中添加combobox,其中包含一些要选择的参数。 所选内容应绑定到任务的ExecutingCore属性 我想我把DataGridComboxColumn的ItemsSour
<DataGrid Grid.Column="3" ItemsSource="{Binding Database.list_Tasks}"
HorizontalAlignment="Left" Margin="21,52,0,0" VerticalAlignment="Top"
Height="262" Width="205" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Task" Binding="{Binding Task_Spec_Name}"/>
<DataGridComboBoxColumn
Header="Executing core" Width="100"
ItemsSource="{Binding list_CoreID}"
SelectedItemBinding="{Binding ExecutingCore, Mode=TwoWay}"/>
</DataGrid.Columns>
</DataGrid>
这就是它的样子
使现代化
我尝试了EagleBeak的解决方案:
<DataGridComboBoxColumn
Header="Executing core" Width="100"
ItemsSource="{Binding ElementName=TasksGrid, Path=DataContext.list_CoreID}"
SelectedItemBinding="{Binding ExecutingCore, Mode=TwoWay}"/>
</DataGrid.Columns>
但这导致了错误:
错误:System.Windows.Data错误:2:找不到目标元素的治理FrameworkElement或FrameworkContentElement。BindingExpression:Path=DataContext.list\u CoreID;DataItem=null;目标元素为'DataGridComboxColumn'HashCode=20169503;目标属性是“ItemsSource”类型“IEnumerable”
我在博客中发现了一些东西:
WPF不知道使用哪个FrameworkElement来获取DataContext,因为该列不属于DataGrid的可视树或逻辑树
有更好的解决办法吗?我也遇到过这种问题。按照下面的方法,我在XAML中解决了这个问题
<wpf:DataGridComboBoxColumn
x:Name="cboExecutingcore"
Header="Executing core"
SelectedItemBinding="{Binding Path =Executingcore, Mode=TwoWay}"/>
对不起,伙计。我的解决方案不起作用,突然我在工作中被包围了。恐怕我得退出讨论了。但也许这会有帮助:没问题,谢谢你。我现在是在代码隐藏中完成的,这工作没有问题。嘿,伙计。刚刚查看了您的问题,并查看了您发布的Levesque博客的链接。现在我记得几年前我所在的团队中有人遇到过这个问题。BindingProxy解决方案正是我们当时所做的。比IMO背后的代码要好得多。这正是我所做的,而且据我所知,这是唯一一种不必胡闹的方法……我在我的一个案例中花了不止一天的时间。但无法从XAML绑定它。数据已正确保存,但组合框不显示任何值。
<wpf:DataGridComboBoxColumn
x:Name="cboExecutingcore"
Header="Executing core"
SelectedItemBinding="{Binding Path =Executingcore, Mode=TwoWay}"/>
cboExecutingcore.ItemsSource = list_CoreID;
cboExecutingcore.DisplayMemberPath = "Display Property"