我有一个窗口,其中包含IpList
类型ObervableCollection<string>
的属性,我将窗口的DataContext
属性设置为窗口本身,以便我可以将属性从XAML元素绑定到属性窗户。我窗口中的一个XAML元素是ListBox
,其ItemTemplate
:
<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”按钮的父列表框项目?
答案 0 :(得分:2)
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);
}
答案 1 :(得分:0)
如果你没有使用MVVM:
将其放入点击事件
string s=(string)((sender as Button).DataContext);
IpList.Remove(item);