我正在尝试设置一个列表框,用户可以通过单击要删除的每个值来删除项目。 我为我的列表框设置了样式(DisplayName是项目类的成员),或者为每个项目包含一个按钮:
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding DisplayName}" />
<Button Content="[x]" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
现在我无法尝试设置按钮来删除相关条目。 任何人都可以指出方向吗? 提前谢谢。
答案 0 :(得分:3)
建议您使用命令并通过命令参数传递列表框中的选定项。
<ListBox x:Name="MyListBoxName">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding DisplayName}" />
<Button Content="[x]"
Command="{Binding ElementName=MyListBoxName, Path=DataContext.DeleteItemCommand}"
CommandParameter="{Binding }" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
public class YourViewModel
{
public ICommand DeleteItemCommand { get; set; }
public ObservableCollection<SomeClass> ListBoxDataSource { get; set; }
public YourViewModel()
{
DeleteItemCommand = new DelegateCommand<object>(DeleteItem);
}
private void DeleteItem(object item)
{
}
}