代码之家  ›  专栏  ›  技术社区  ›  palehorse

数据绑定2个WPF组合框到1个源,而不被“链接”

  •  4
  • palehorse  · 技术社区  · 17 年前

    我有一个主细节场景,其中我有一个组合框,列出来自ObjectDatasourceProvider的公司。在下面,我有两个组合框从当前公司对象绑定到contacts属性。我需要能够在每个组合框中选择不同的联系人;但是,一旦我更改了一个列表中的选择,另一个列表就会更新为同一个联系人。

    我尝试过不同的设置(单程和双程),但到目前为止似乎没有任何效果。这是我的成绩单的摘录。

    <Page.Resources>
        <!-- This is a custom class inheriting from ObjectDataProvider -->
        <wg:CustomersDataProvider x:Key="CompanyDataList" />
    </Page.Resources>
    
    <Grid>
        <!--- other layout XAML removed -->
        <ComboBox x:Name="Customer" Width="150"
                  ItemsSource="{Binding Source={StaticResource CompanyDataList},Path=Companies,Mode=OneWay}"
                  DisplayMemberPath="Name"
                  SelectedValuePath="Id"
                  IsSynchronizedWithCurrentItem="True"
                  SelectedValue="{Binding Path=Id, Mode=OneWay}" 
                  VerticalAlignment="Bottom" />
    
        <ComboBox x:Name="PrimaryContact" Width="150"
                  DataContext="{Binding ElementName=Customer,Path=Items,Mode=OneWay}"
                  ItemsSource="{Binding Path=Contacts,Mode=OneWay}"
                  DisplayMemberPath="FullName"
                  SelectedValuePath="Id"
                  IsSynchronizedWithCurrentItem="True"
                  SelectedValue="{Binding Path=Id,Mode=OneWay}" />
    
        <ComboBox x:Name="AdminContact" Width="150"
                  DataContext="{Binding ElementName=OwnerCustomer,Path=Items,Mode=OneWay}"
                  ItemsSource="{Binding Path=Contacts,Mode=OneWay}"
                  DisplayMemberPath="FullName"
                  SelectedValuePath="Id"
                  IsSynchronizedWithCurrentItem="True"
                  SelectedValue="{Binding Path=Id,Mode=OneWay}" />
    
        <!--- other layout XAML removed -->
    </Grid>
    

    我原以为创建一个CollectionViewSource是一种可行的方法,但我没能做到这一点。有没有一个简单的方法可以这样做,这样PrimaryContact和AdminContact就不会链接?

    1 回复  |  直到 17 年前
        1
  •  3
  •   Bob King    17 年前

    改变你的“ IsSynchronizedWithCurrentItem “属性为”false“。