Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF组合框正在设置新对象';通过datacontext更改selecteditem时旧对象上的s值_C#_Wpf_Combobox - Fatal编程技术网

C# WPF组合框正在设置新对象';通过datacontext更改selecteditem时旧对象上的s值

C# WPF组合框正在设置新对象';通过datacontext更改selecteditem时旧对象上的s值,c#,wpf,combobox,C#,Wpf,Combobox,我有一个WPF中的组合框。组合框位于网格内部,网格的DataContext绑定到ListView的SelectedItem。组合框的ItemsSource设置为StaticResource,位于窗口资源中。ItemsSource不会更改。我尝试使用SelectedValue和SelectedItem,但这两种方法都会导致相同的问题。问题在于,当ListView的SelectedItem发生更改时,ComboBox实际上是在将以前选定项的属性值设置为新选定项的属性值。很明显我做错了什么,因为我在过

我有一个WPF中的组合框。组合框位于网格内部,网格的DataContext绑定到ListView的SelectedItem。组合框的ItemsSource设置为StaticResource,位于窗口资源中。ItemsSource不会更改。我尝试使用SelectedValue和SelectedItem,但这两种方法都会导致相同的问题。问题在于,当ListView的SelectedItem发生更改时,ComboBox实际上是在将以前选定项的属性值设置为新选定项的属性值。很明显我做错了什么,因为我在过去多次使用组合框都没有这个问题。我在网上搜遍了,找不到答案。我发现的最接近、最相似的问题是:

但似乎没有解决办法。评论中列出的解决方案对我不起作用

我为ListView和ComboBox创建了SelectionChanged事件,并在每个事件和正在设置的属性上设置断点。该属性实际上是在触发其中一个之前设置的。所以,即使我想创建一些黑客解决方案,我也不能

作为记录,组合框功能工作得非常好。当在ListView中选择一个对象时,我可以看到Template name属性,正如我应该看到的那样,并且项目列表是正确的。如果手动更改所选项目,则属性将更改为新项目,就像它应该更改的那样。问题是,当我更改ListView中的选定项时,新选定对象的“模板”属性被设置为以前选定对象的“模板”属性。因此,组合框比其他任何东西都要先改变

ListView和ComboBox的xaml如下所示

<ListView x:Name="my_ListBox" FlowDirection="RightToLeft"
      Margin="5" Grid.RowSpan="2" SelectedIndex="0"
      ItemsSource="{Binding Source={StaticResource myList}}" 
      DisplayMemberPath="Name"
      SelectionChanged="my_ListBox_SelectionChanged"/>

<Grid DataContext="{Binding ElementName=my_ListBox, Path=SelectedItem}">
     <ComboBox Name="comboBox_myTemplate"                                       
               ItemsSource="{Binding Source={StaticResource myTemplatesList}}" 
               SelectedValue="{Binding Template}"
               SelectionChanged="comboBox_myTemplate_SelectionChanged"
               DisplayMemberPath="Name" FontSize="20" Margin="5"/>
</Grid>

如果我在组合框中设置“IsSynchronizedWithCurrentItem=“True”,问题就解决了。如果有人想解释它到底在做什么以及它是如何工作的,我很乐意听到。谢谢。

如果我在组合框中设置“IsSynchronizedWithCurrentItem=“True”,问题就解决了。如果有人想解释它到底在做什么以及它是如何工作的,我很乐意听到。谢谢