ListBox中的所有组合框都会在更改其中任何一个时更改

pal*_*rse 4 data-binding wpf combobox listbox

我有一个ListBox绑定到ObservableCollection自定义类型的表单.在每个项目中都有ComboBox一个枚举类型的绑定.当窗口加载时,所有ComboBoxes都默认为某个值.当我更改SelectedItem任何一个(从UI,而不是从代码),所有其他ComboBox更改为相同SelectedItem.

我不确定我做错了什么,这是我目前处理这个问题的XAML.

<Window.Resources>
    <ObjectDataProvider x:Key="SyncOperationValues"
                        MethodName="GetNames"
                        ObjectType="{x:Type sys:Enum}">
        <ObjectDataProvider.MethodParameters>
            <x:Type TypeName="local:SyncOperationEnum" />
        </ObjectDataProvider.MethodParameters>
    </ObjectDataProvider>
...
    <DataTemplate x:Key="SyncListTemplate">
        <Grid Grid.Column="1" Grid.RowSpan="2" Margin="0,0,20,0" x:Name="olDetails"
            DataContext="{Binding Path=OlContact}">
            <Grid.RowDefinitions>
                <RowDefinition />
                <RowDefinition />
                <RowDefinition />
                <RowDefinition />
                <RowDefinition />
                <RowDefinition />
            <RowDefinition />
            </Grid.RowDefinitions>
...
            <ComboBox x:Name="SyncOp" 
                Width="120" Height="19"
                Margin="4,0,10,0" 
                IsSynchronizedWithCurrentItem="True" 
                ItemsSource="{Binding Source={StaticResource SyncOperationValues}}"
                             SelectedItem="{Binding Operation}"
                             VerticalAlignment="Center" />

...
Run Code Online (Sandbox Code Playgroud)

ListBox:

 <ListBox x:Name="SyncList"
     ScrollViewer.HorizontalScrollBarVisibility="Hidden"
     ItemContainerStyle="{StaticResource StretchedContainerStyle}"
     ItemTemplate="{StaticResource SyncListTemplate}">
 ListBox>
Run Code Online (Sandbox Code Playgroud)

我尝试了一些不同的选项,比如绑定到a CollectionView; 但似乎没有任何作用.任何人都可以指出我的错误吗?

谢谢!

Joh*_*zek 7

我有类似的情况,并将ComboBox上的IsSynchronizedWithCurrentItem属性设置为"False"修复它.我理解它的方式,将值设置为"True"意味着ComboBox值将是ListBox的当前项的同步值.基本上,所有ComboBox都绑定到相同的值.这听起来就像你正在经历的那样.尝试:

IsSynchronizedWithCurrentItem="False"
Run Code Online (Sandbox Code Playgroud)