2
我在我的第一個「生產」 WPF應用程序在外面打工,我現在遇到的問題。
我有一些類似於下面的例子的代碼。我遇到的問題是我無法填充ComboBox
。我猜想這是因爲Grid
的ItemsSource
是‘從能夠看到的視圖模型的任務集合堵’的ComboBox
,但我只是猜測。其他一切都是正確的數據綁定。如何將DataGridComboBoxColumn綁定的ItemSource
我SO沖刷,發現this問題;這聽起來和我想要做的完全一樣,但它對我來說不起作用。
任何想法,爲什麼我不能得到ComboBox
來填充?
型號:
public class Activity{
public int Id { get; set; }
public string Title { get; set; }
public Task Task { get; set; }
}
public class Task{
public int Id { get; set; }
public string Title { get; set; }
}
視圖模型:
public ApprovalViewModel{
public ObservableCollection<Activity> Activities { /* ... property logic */ }
public ObservableCollection<Task> Tasks { /* ... property logic */ }
}
查看:
<DataGrid ItemsSource="{Binding Activities}" AutoGenerateColumns="False">
<DataGrid.Resources>
<DataTemplate x:Key="displayTemplate">
<TextBlock Text="{Binding Task.Title}"/>
</DataTemplate>
<DataTemplate x:Key="editTemplate">
<ComboBox ItemsSource="{Binding Tasks}" <!--I think the problem is here-->
SelectedValue="{Binding Task}"
DisplayMemberPath="Title"/>
</DataTemplate>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridComboBoxColumn DisplayMemberPath="Title"/>
<DataGridTextColumn Binding="{Binding User}" Header="User"/>
<DataGridTextColumn Binding="{Binding Task.Project.Title}" Header="Project"/>
<DataGridTemplateColumn
Header="Task"
CellTemplate="{StaticResource displayTemplate}"
CellEditingTemplate="{StaticResource editTemplate}"/>
<DataGridTextColumn Binding="{Binding Description}" Header="Description"/>
</DataGrid.Columns>
</DataGrid>
編輯:正確ComboBox
代碼是在這裏:
<ComboBox
ItemsSource="{Binding Path=DataContext.Tasks,
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type UserControl}}}"
SelectedValue="{Binding Task.Title}"
SelectedValuePath="Title"
DisplayMemberPath="Title"/>
謝謝,工作完美!我不得不將x:Type設置爲UserControl。此外,我很困惑(現在仍然是),因爲FindAncestor不在Intellisense中顯示。它似乎工作,但。 – 2011-02-23 15:07:59