Hi Subbarayudu,
Try the following code:
MainWindow.cs:
<Grid>
<ItemsControl ItemsSource="{Binding Items}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" MinWidth="320">
<TextBlock Width="130" Text="{Binding Name}"/>
<TextBlock Width="130" Text="{Binding Number1}" />
<TextBlock Width="130" Text="{Binding Number2}" />
<Button Width="130" Content="Delete" Command="{Binding ClickCommand}"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
And code behind:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = new ViewModle();
}
}
public class ViewModle : INotifyPropertyChanged
{
public ViewModle()
{
InitItems();
}
protected void InitItems()
{
var list = new ObservableCollection<Data>();
var data1 = new Data() { Name = "Crosin", Number1 = 10, Number2 = 20 };
data1.ClickCommand = new MeCommand(() => this.HandleDeleteClick(data1));
list.Add(data1);
var data2 = new Data() { Name = "Saridon", Number1 = 20, Number2 = 30 };
data2.ClickCommand = new MeCommand(() => this.HandleDeleteClick(data2));
list.Add(data2);
var data3 = new Data() { Name = "PainKiller", Number1 = 30, Number2 = 40 };
data3.ClickCommand = new MeCommand(() => this.HandleDeleteClick(data3));
list.Add(data3);
Items = list;
}
protected void HandleDeleteClick(Data data)
{
this.Items.Remove(data);
NotifyPropertyChanged("Items");
}
public IList Items
{
get;
set;
}
private void NotifyPropertyChanged(String propertyName = "")
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
public class MeCommand : ICommand
{
public delegate void ExecuteMethod();
private ExecuteMethod meth;
public MeCommand(ExecuteMethod exec)
{
meth = exec;
}
public bool CanExecute(object parameter)
{
return true;
}
public event EventHandler CanExecuteChanged;
public void Execute(object parameter)
{
meth();
}
}
public class Data
{
public string Name { get; set; }
public int Number1 { get; set; }
public int Number2 { get; set; }
public ICommand ClickCommand { get; set; }
}