1

我正在尝试通过以下方式实现主从关系:

(shown in a ComboBox)                       (shown in a DataGrid)
|-----------|                               |------------|
| Customers |                               | Orders     |
|-----------|                               |------------|
| Id        |--- CustomersOrdersRelation ---| CustomerId |
| Name      |                               | OrderId    |
| ...       |                               | ...        |
|-----------|                               |------------|

但是我在组合框中也有一个 <All Customers> 项,为此我需要查看详细数据网格中显示的所有客户的所有订单。

这是 XAML 代码的片段:

<ComboBox x:Name="CustomersComboBox" ...>
    <ComboBox.ItemsSource>
        <CompositeCollection>
            <ComboBoxItem Content="{StaticResource nullCustomer}" /> <!-- I wrote my own class NullCustomer -->
            <CollectionContainer Collection="{Binding Source={StaticResource CustomersCollectionViewSource}}" />
        </CompositeCollection>
    </ComboBox.ItemsSource>
</ComboBox>

<DataGrid ItemsSource="{Binding ElementName=CustomersComboBox, Path=SelectedItem.CustomersOrdersRelation}" ...>

现在我有两个问题:

  1. Path=SelectedItem.CustomersOrdersRelation当组合框SelectedItem(在运行时是 DataRowView)没有属性时,数据网格中的绑定如何找到CustomersOrdersRelation

  2. 修改自己的NullCustomer类以便在选择 <All Customers> 时AllOrdersCollectionViewSource显示结果的最简单方法是什么?

4

1 回答 1

1
  1. DataRowViewimplements ICustomTypeDescriptor,绑定系统可能使用它来确定如何获取该属性。

  2. 还给它一个属性,该属性CustomersOrdersRelation返回CompositeCollection包含CollectionContainers所有客户订单的内容。

于 2013-06-21T21:55:22.310 回答