0

我正在尝试做一些我认为非常简单的事情,但目前完全让我感到困惑。

假设我有两张桌子。一个包含所有者列表(以保持唯一性)。另一个有一个项目列表及其所有者。我想要两个数据网格:1)所有者列表。2)项目及其所有者的列表,其中所有者是从组合框中选择的。

其中第一个非常简单:将表设置为数据源,并将其拖到 WPF 表单上。工作得很好:

<DataGrid ItemsSource="{Binding Source={StaticResource ownersViewSource}}" Name="ownersDataGrid" DataContext="{Binding}">
    <DataGrid.Columns>
        <DataGridTextColumn x:Name="ownerColumn1" Binding="{Binding Path=Owner}" />
    </DataGrid.Columns>
</DataGrid>

另一部分不工作。我原以为这会起作用,但我显然不明白:

<DataGridTemplateColumn Header="Header">
    <DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
        <ComboBox ItemsSource="{Binding Source={StaticResource ownersViewSource}}" DisplayMemberPath="Owner" />
    </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

(显然,这是在 DataGrid 中)

问题是这显示了列表 - 但从组合框中选择项目也会将所有其他行中的选定项目更改为该项目!

我哪里错了?

4

1 回答 1

0

Got it!

<DataGridComboBoxColumn Header="Owner Choice" ItemsSource="{Binding Source={StaticResource ownerViewSource}}" DisplayMemberPath="Owner" SelectedItemBinding="{Binding Path=Owner}"  />

(The ItemsSource binds to one place, the SelectedItemBinding binds to the other.)

于 2013-03-19T19:30:08.630 回答