Привязка данных 2 WPF ComboBox к 1 источнику без привязки

У меня есть сценарий master-detail, в котором у меня есть 1 компания со списком ComboBox из ObjectDataSourceProvider. При этом у меня есть 2 привязки ComboBox к свойству Contacts из текущего объекта Company. Мне нужно иметь возможность выбирать разные контакты в каждом ComboBox; однако, как только я меняю выбор в одном списке, другой список обновляется до того же контакта.

Я пробовал разные настройки (OneWay и TwoWay), но пока ничего не работает. Вот выдержка из моего XAML.

<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 не были связаны?


person palehorse    schedule 25.09.2008    source источник


Ответы (1)


Измените свой «IsSynchronizedWithCurrentItem " присваивает значение "False".

person Bob King    schedule 25.09.2008
comment
Блестящий, хотя это вызвало другую проблему, я думаю, что могу работать с этим. Спасибо, Боб, похоже, ты настоящий гуру WPF! - person palehorse; 25.09.2008
comment
Я думаю, что WPF настолько велик, что никто, кроме, может быть, Петцольда, не будет гуру :-) - person Bob King; 25.09.2008