C# 如何将ListView的一个ObservableCollection的属性绑定到另一个ListView的SelectedItem的属性?
所以我有一些C# 如何将ListView的一个ObservableCollection的属性绑定到另一个ListView的SelectedItem的属性?,c#,wpf,xaml,listview,C#,Wpf,Xaml,Listview,所以我有一些ListViews。第一个绑定到ObservaleCollection。ComPort的所有属性都可能采用一些预定义值。其他ListViews负责该属性:它们显示所有可能的(预定义)值,并且SelectedItem应该是来自第一个ObservaleCollection的ComPort属性的当前值 我无法附加图像,因此这是一张外部图片,这将使情况变得清晰: 我试图创建一个classComPort的实例,用于保存第一个列表视图中所选项目的当前值,但是没有帮助,我无论如何都无法处
ListView
s。第一个绑定到ObservaleCollection
。ComPort
的所有属性都可能采用一些预定义值。其他ListView
s负责该属性:它们显示所有可能的(预定义)值,并且SelectedItem应该是来自第一个ObservaleCollection
的ComPort属性的当前值
我无法附加图像,因此这是一张外部图片,这将使情况变得清晰:
我试图创建一个classComPort
的实例,用于保存第一个列表视图中所选项目的当前值,但是没有帮助,我无论如何都无法处理它。如何解决此任务?1)不要处理PortsList ListView上的SelectionChanged,而是将您的复选框绑定到ListViewItemsPanel,如下所示:
<CheckBox IsChecked={Binding IsSelected, RelativeSource=Parent/>
我没有测试过任何代码,也有一段时间没有做过类似的事情,所以我为错误道歉,但这应该会让你更接近。由于您没有提供足够的信息,我不得不对您的类进行一些假设。您能分享一下您的ComPort类代码吗?如果我没弄错的话,我想你需要将你的其他属性集合(波特率、平价等)放到ComPort类中,这样你就可以绑定到它们。嗯,复选框将用于其他一些东西,但是
SelectedValue=“{Binding ElementName=ComPortLB,Path=SelectedValue.PortName}”
正是我需要的!非常感谢你。现在它看起来是如此的简单和明显:——)那么答案是什么?
<ListView
Name="PortsList"
Grid.Row="1"
Grid.Column="0"
Margin="5"
VerticalAlignment="Stretch"
ItemsSource="{StaticResource vComPorts}"
DataContext="{StaticResource vComPorts}"
SelectedValuePath="PortName"
SelectedValue="{Binding ElementName=SystemPortsList, Path=SelectedItem.Value}"
SelectionChanged="PortsList_SelectionChanged"
MouseDoubleClick="PortsList_MouseDoubleClick">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox />
<TextBlock Margin="5,0,0,0" Text="{Binding Path=Name}" />
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<ListView
x:Name="SystemPortsList"
Margin="5"
VerticalAlignment="Stretch"
DataContext="{Binding Source={StaticResource vSelectedPort}}"
ItemsSource="{Binding Source={StaticResource vSystemPortsView}}"
SelectedItem="{Binding Source={StaticResource vSelectedPort}, Path=PortName}"
MouseEnter="SystemPortsList_Refresh"
MouseLeave="SystemPortsList_Refresh"
Grid.Row="1"
Grid.Column="1" SelectionChanged="SystemPortsList_SelectionChanged">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Name="tb" Margin="5,0,0,0" Text="{Binding Path=Name}" />
</StackPanel>
</ListView.ItemTemplate>
</ListView>
<CheckBox IsChecked={Binding IsSelected, RelativeSource=Parent/>
SelectedValue="{Binding ElementName=ComPortLB, Path=SelectedValue.PortName}"