我敢打赌这很容易#更新:它不是#,但我没有在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_Tasks
是ViewModel
。
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;
有更好的解决方案吗?
答案 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"