Wpf 如何通过从另一个ListView中选择来更改ListView中选定项的值?
我想让用户建立一个固定长度的动作序列。为此,我有两个列表视图:Wpf 如何通过从另一个ListView中选择来更改ListView中选定项的值?,wpf,xaml,binding,two-way,Wpf,Xaml,Binding,Two Way,我想让用户建立一个固定长度的动作序列。为此,我有两个列表视图: -数字1显示所有可能的单步操作的分组列表 -数字2显示要编辑的操作序列 场景应如下所示: -用户在列表2中选择要更改的项目 -这将选择列表1中的相同项目 -现在,若用户选择列表1中的其他项目W,则列表2中的所选值应就地更改为W 我知道如何从代码中实现,但我正在尝试弄清楚是否可以在绑定上实现 我只尝试以双向模式绑定它们的SeletedItem属性,但这显然是不正确的,因为列表1和列表2之间应该存在一些不对称性 我想我需要参考Selec
-数字1显示所有可能的单步操作的分组列表
-数字2显示要编辑的操作序列 场景应如下所示:
-用户在列表2中选择要更改的项目
-这将选择列表1中的相同项目
-现在,若用户选择列表1中的其他项目W,则列表2中的所选值应就地更改为W 我知道如何从代码中实现,但我正在尝试弄清楚是否可以在绑定上实现 我只尝试以双向模式绑定它们的SeletedItem属性,但这显然是不正确的,因为列表1和列表2之间应该存在一些不对称性 我想我需要参考
SelectedValue
,但我没有得到,SelectedItem
和SelectedValue
在我的情况下,当项目和值相同时,两者之间有什么区别
更新
以下是该问题的示例代码:
<Window x:Class="WpfApplication.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:system="clr-namespace:System;assembly=mscorlib"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<x:Array x:Key="Strings" Type="system:String">
<system:String>ABC</system:String>
<system:String>BCD</system:String>
<system:String>CDE</system:String>
<system:String>EFG</system:String>
</x:Array>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBox x:Name="SearchBox"/>
<ListView
Grid.Row="1"
ItemsSource="{StaticResource Strings}"
SelectedItem="{Binding Text, ElementName=SearchBox, Mode=TwoWay}"
/>
</Grid>
</Window>
基础知识
卡介苗
CDE
EFG
选择列表中的任何项目时,其值将显示在
文本框中。如果您试图更改文本框中的文本,我希望所选项目替换为新文本。但实际上,当我编辑文本框中的文本时,它不会更改所选项目本身,而是会影响选择。如果有两个列表框
控件的ItemsSource属性设置为同一源。在两个列表框上将IsSynchronizedWithCurrentItem设置为true,以确保每个列表框中的所选项目相同
<ListBox Name="employeeListBox1"
ItemsSource="{Binding Source={StaticResource Employees}}"
ItemTemplate="{StaticResource EmployeeItemTemplate}"
IsSynchronizedWithCurrentItem="True"/>
<ListBox Name="employeeListBox2"
ItemsSource="{Binding Source={StaticResource Employees}}"
ItemTemplate="{StaticResource EmployeeItemTemplate}"
IsSynchronizedWithCurrentItem="True"/>
用this()检查如果两个列表视图的类型相同,为什么不尝试对两个列表视图使用相同的属性呢
这将选择相同的列表项
(如果找到)
希望这能解决您的问题。不,这不是我想要达到的目的。问题是我需要为这些列表视图提供不同的行为。我添加了一个简化的示例,使用TextBox而不是List1。