使用项模板获取列表框项的值
本文关键字:列表 获取 | 更新日期: 2023-09-27 18:11:17
我有一个具有ObervableCollection<string>
类型的IpList
属性的窗口,我将窗口的DataContext
属性设置为窗口本身,以便我可以将XAML元素的属性绑定到窗口的属性。我的窗口中的一个XAML元素是具有ItemTemplate
:
ListBox
。<ListBox
ItemsSource="{Binding IpList}"
x:Name="lbIps">
<ListBox.ItemTemplate>
<DataTemplate>
<DockPanel>
<Button
Click="lbIps_bnClose_Click"
Content="X"
DockPanel.Dock="Left" />
<TextBlock
Text="{Binding}" />
</DockPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我希望列表框项在点击"X"按钮时自行删除。我的第一次尝试是获取所选项目索引并将其从列表中删除。但是当我只点击按钮时,没有项目被选中。我的第二次尝试是按值而不是按索引删除项目,但我不知道如何获取包含被单击按钮的列表框项目的值。所以我的问题是:是否有可能获得包含单击按钮的列表框项的索引/值?如果有,我该怎么做?是否有其他方法可以删除单击"X"按钮的父列表框项?
private void lbIps_bnClose_Click(object sender, RoutedEventArgs e)
{
var vm = this.DataContext as [yourViewModelName];
var button = sender as Button;
var item = (string)button.DataContext;
vm.IpList.Remove(item);
}
如果您不使用MVVM:
把这个放到点击事件
string s=(string)((sender as Button).DataContext);
IpList.Remove(item);