【发布时间】:2014-07-18 23:25:24
【问题描述】:
我有一个与 ObservableCollection 绑定的 ListView。 ListView的Itemtemplate如下:
<ListView ItemsSource="{Binding}" IsSynchronizedWithCurrentItem="True" PreviewMouseLeftButtonUp="ListViewClicked" PreviewKeyDown="NameBox_KeyDown">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Source="./Resources/DeleteIcon.png"/>
<TextBox Text="{Binding Path=Name}"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
通过这种方式,我可以让用户选择更改元素的名称,或者将其从列表中删除。我通过附加到 ListView 的两个事件处理程序在代码中处理这两个操作。
问题是,当我单击 TextBox 时,ListView 的 SelectedItems 属性没有改变,它指向最后一个选定的项目。当我单击图像或选择更改周围的可用空间时。
现在我有两个问题:
- 有没有一种简单的方法可以解决此问题?
- 是否可以获得对其属性由 TextBox 公开的集合项的引用?
【问题讨论】:
-
你需要多选还是单选就够了?
-
我正在使用单曲。
-
关于第二个问题。您想在哪里访问此列表项?在
DataTemplate中还是在代码中? -
在代码中。我正在测试你的代码,但是当我第一次点击时遇到了一些问题(无论我点击哪里,它总是选择第一个项目),我试图理解为什么
-
在
ListView上强制SelectionMode="Single"。我已经更新了答案