Итак, у меня есть несколько ListView
s. Первый привязан к ObservaleCollection<ComPort>
. Все свойства ComPort
могут принимать некоторые предопределенные значения. Другие ListView
s отвечают за эти свойства: они показывают все возможные (предопределенные) значения, а SelectedItem должны быть текущим значением этого свойства ComPort с первого ObservaleCollection
.Как связать свойства одного ObservableCollection ListView с свойствами SelectedItem другого ListView?
Я не могу прикрепить изображения так, здесь является внешняя картина, это сделало бы ситуацию чистой: http://i.stack.imgur.com/ZBRRx.png
<Window.Resources>
<ResourceDictionary x:Name="rd">
<l:ComPorts x:Key="vComPorts"/>
<l:SystemPorts x:Key="vSystemPorts"/>
<l:BaudRates x:Key="vBaudRate"/>
<l:Parities x:Key="vParities"/>
<l:DataBits x:Key="vDataBits"/>
<l:StopBits x:Key="vStopBits"/>
<l:Timeouts x:Key="vTimeouts"/>
<l:ComPort x:Key="vSelectedPort"/>
</ResourceDictionary>
</Window.Resources>
...
<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>
Я пытался сделать экземпляр класса ComPort
для сохранения текущего значения выбранного элемента из первого ListView, но в любом случае я не могу справиться с ним без помощи. Как решить эту задачу?
Можете ли вы поделиться своим кодом класса ComPort? Если я понимаю вас правильно, я думаю, что вам нужно поместить ваши другие коллекции свойств (BaudRates, Parities и т. Д.) В класс ComPort, чтобы вы могли привязываться к ним. – lena