0
我一直在WPF上编写一个应用程序。它有一个绑定到自定义类的ObservableCollection的ListBox。使用dataTemplate显示数据,该数据模板具有DELETE按钮,用于删除ObservableCollection的项目>>。从WPF和C上的数据模板上的按钮删除ListBoxItem#
数据源收集的定义如下所示:
public class SellItem : INotifyPropertyChanged
{
private string _name, _code, _details;
public SellItem Self
{
get { return this; }
}
public string Name
{
get
{
return _name;
}
set
{
_name = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("Name"));
}
}
public string Code
{
get
{
return _code;
}
set
{
_code = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("Code"));
}
}
public string Details
{
get
{
return _details;
}
set
{
_details = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("Details"));
}
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
#endregion
}
public class ItemCollection : ObservableCollection<SellItem>
{
static public ItemCollection theCollection = null;
public ItemCollection()
{
theCollection = this;
}
}
的XAML代码看起来是这样的:
<Window x:Class="NALT_WPF.SaleWindow"
...
xmlns:local="clr-namespace:NALT_WPF"
Title="Test" Height="494" Width="838">
<Window.Resources>
<ObjectDataProvider x:Key="theItemCollection" ObjectType="{x:Type local:ItemCollection}"/>
</Window.Resources>
<Window.CommandBindings>
<!--Using command binding-->
<CommandBinding Command="Delete" Executed="CommandBinding_Executed_RemoveAll" />
</Window.CommandBindings>
<Grid>
<Grid.Resources>
<DataTemplate x:Key="ProductListItemTemplate">
<Grid>
...
<!-- This is the button on data template to remove the item from 'ItemCollection' -->
<Button Name="btRemoveAllItems" Content="X"
Command="Delete" CommandParameter="{Binding Self}">
</Button>
...
</Grid>
</DataTemplate>
</Grid.Resources>
...
<ListBox Grid.Row="1" Margin="10" Name="lstProducts"
ItemTemplate="{StaticResource ResourceKey=ProductListItemTemplate}"
ItemsSource="{Binding Source={StaticResource theItemCollection}}"
HorizontalContentAlignment="Stretch">
</ListBox>
</Grid>
而在主窗口C#代码:
public partial class MainWindow : Window
{
public SaleWindow()
{
InitializeComponent();
}
...
private void CommandBinding_Executed_RemoveAll(object sender, ExecutedRoutedEventArgs e)
{
// this is the code executed when DELETE button on data template is pressed.
// I was thinking to remove the item here
MessageBox.Show("Removing, proceed? ...");
//... ...
//...
}
}
我该怎么做?从模板上的按钮所属的列表框上的集合中删除项目。该项目并不总是选定的一个。
我感谢所有帮助 :)