我想在双击并修改文本框中的selectedItem后更新列表框中的项目,但没有成功。
XAML语言
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="450" Width="800">
<Grid>
<ListBox x:Name="lstTextes" SelectedItem="{Binding SelectedText,Mode=TwoWay}" ItemsSource="{Binding ListTexts,UpdateSourceTrigger=PropertyChanged}" Grid.Column="0" Margin="52,54,117,85" MouseDoubleClick="lstTextes_DblClick"/>
<Popup x:Name="popLigText" StaysOpen="False" Grid.ColumnSpan="1" Width="300" IsOpen="false">
<ScrollViewer VerticalScrollBarVisibility="Auto" MaxHeight="500" Background="#F9F9F9" FontSize="11" Foreground="#0E1D31">
<StackPanel>
<TextBox x:Name="TB_LigneText" HorizontalAlignment="Center" Text="{Binding Path=SelectedItem, ElementName=lstTextes, Mode=TwoWay}" Width="300" Height="30" KeyDown="UpdateSelectedItem"/>
</StackPanel>
</ScrollViewer>
</Popup>
</Grid>
</Window>
代码vb.net
第一次
错误在哪里?谢谢您的帮助。
这个文本框会显示所选项目的文本。2如果我修改它,列表(字符串)ListText会被修改,但是文本框不会更新。
2条答案
按热度按时间0dxa2lsx1#
感谢您的详细回答。我添加了一个带有String属性的类属性
我修改了ListTexts属性
并在界面中将标签替换为TextBox
不再需要弹出窗口来修改文本行。谢谢
kg7wmglp2#
字符串是一个对象,是ListTexts集合的一个元素。ListBox.SelectedItem属性包含一个对象。通过更改TextBox中的文本,可以将一个新字符串(即新对象)分配给该属性。SelectedItem属性的逻辑检查ItemsSource集合中是否存在可分配的对象。如果不存在,则不接受该对象,并将其重置为null。
根据您的解释,您需要实现以下两个选项之一:
**1)**使用从TextBox接收的字符串,首先替换ListTexts集合中的字符串。然后才将此行添加到SelectedItem。为此,ListTexts必须是可观察的集合。
**2)**或者为ListTexts元素创建一个实体。此实体将具有一个字符串属性。在实体中实现INotifyPropertyChanged接口。然后可以将TextBox绑定到实体的属性。