我想要的功能是在列表框的每个项目旁边都有一个删除按钮,因此当用户点击它时,该特定项目将从列表中删除。
我正在考虑将它放在数据模板中,但是如何将偶数连接到那个?
谢谢, 肖恩麦克莱恩
答案 0 :(得分:2)
以下是解决此问题的一种方法。创建一个ObservableCollection并将ItemsSource设置为等于该Collection。然后你的按钮点击处理程序可以删除该项目。
using System;
using System.Collections.ObjectModel;
using System.Windows.Controls;
namespace SilverlightApplication1
{
public partial class MainPage : UserControl
{
private ObservableCollection<string> _customers;
public MainPage()
{
InitializeComponent();
_customers = new ObservableCollection<string>() { "Bob", "Mark", "Steve" };
this.DataContext = _customers;
}
public void remove_Click(object sender, EventArgs e)
{
var button = sender as Button;
if (button == null)
return;
var name = button.DataContext as string;
if (string.IsNullOrEmpty(name))
return;
_customers.Remove(name);
}
}
}
在此示例中,您的XAML将如下所示:
<Grid x:Name="LayoutRoot">
<ListBox ItemsSource="{Binding}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" >
<TextBlock Text="{Binding}" />
<Button Content="Remove" Click="remove_Click" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
答案 1 :(得分:1)
将ListBox的ItemsSource绑定到ObservableCollection。 将删除按钮放入数据模板。 按钮的Click事件处理程序可以是这样的:
private void Button_Click(object sender, RoutedEventArgs e)
{
var button = sender as Button;
if (button != null)
{
var yourObject = button.DataContext as YourObject;
if (yourObject != null)
{
YourObjectsObservableCollection.Remove(yourObject);
}
}
}
因此,您可以从按钮DataContext中检索绑定到ListBoxItem的对象。