Datagrid中的Combobox:缺少值

时间:2015-02-05 09:00:05

标签: c# wpf data-binding datagrid combobox

我敢打赌这很容易#更新:它不是#,但我没有在XAML中找到一个纯粹的感情。

我有两个对象:ObservableCollection与" Tasks"作为ItemsSource的{​​{1}}。 Datagrid ObservableCollection string应该是combobox中的值。 Task的名称绑定到第一列。到目前为止,这很好,这很有效。

现在我想在第二列中添加combobox,并选择一些参数。 选择应绑定到task的{​​{1}}属性。

我认为我对ExecutingCore DataGridComboBoxColumn搞砸了。我如何在此处进行此绑定以将我的值显示为下拉列表?

ItemsSource

<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> 不是list_CoreID的属性。 Database.list_TasksViewModel

DataContext

这就是它的样子。

更新

我尝试了EagleBeak的解决方案:

ViewModel.Database.list_Tasks

ViewModel.list_CoreID

但这会导致错误:

错误:System.Windows.Data错误:2:找不到目标元素的管理FrameworkElement或FrameworkContentElement。 BindingExpression:路径= DataContext.list_CoreID;的DataItem = NULL;目标元素是&#39; DataGridComboBoxColumn&#39; (的HashCode = 20169503);目标属性是&#39; ItemsSource&#39; (键入&#39; IEnumerable&#39;)

我在博客中发现了一些内容:http://www.thomaslevesque.com/2011/03/21/wpf-how-to-bind-to-data-when-the-datacontext-is-not-inherited/

&#34; WPF不知道使用哪个FrameworkElement来获取DataContext,因为该列不属于DataGrid的可视树或逻辑树。&#34;

有更好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

我也遇到过这种问题。以下是我在XAML中解决的问题

<wpf:DataGridComboBoxColumn 
 x:Name="cboExecutingcore" 
 Header="Executing core" 
 SelectedItemBinding="{Binding Path =Executingcore, Mode=TwoWay}"/>

然后我从代码behide绑定了cboExecutingcore。

cboExecutingcore.ItemsSource = list_CoreID;
cboExecutingcore.DisplayMemberPath = "Display Property"