Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.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# 如何将ListView的一个ObservableCollection的属性绑定到另一个ListView的SelectedItem的属性?_C#_Wpf_Xaml_Listview - Fatal编程技术网

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属性的当前值

我无法附加图像,因此这是一张外部图片,这将使情况变得清晰:



我试图创建一个class
ComPort
的实例,用于保存第一个列表视图中所选项目的当前值,但是没有帮助,我无论如何都无法处理它。如何解决此任务?

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}"