通过点击gridviewc#中的一个项目,从ObservableCollection中移除一个对象
本文关键字:项目 一个 ObservableCollection 一个对象 gridviewc# | 更新日期: 2023-09-27 18:17:01
我有一个可观察集合:
private ObservableCollection<Icon> MyContactInst;
集合包含一些对象,这些对象通过添加按钮和删除按钮实时更改。
查看GridView中的对象:
<GridView Name="GridView2" Grid.Row="2" ItemsSource="{x:Bind MyContactInst}"
IsItemClickEnabled="True"
ItemClick="GridView2_ItemClick">
<GridView.ItemTemplate>
<DataTemplate x:DataType="data:Icon">
<StackPanel Orientation="Vertical">
<Image Width="65" Source="{x:Bind IconImagePath}"/>
<TextBlock FontSize="16" Text="{x:Bind FullName}"/>
<TextBlock FontSize="10" Text="{x:Bind Age}"/>
</StackPanel>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
我想单击GridView中的一个对象,然后单击Remove按钮将其从集合和GridView中删除。有什么有效的方法吗?
谢谢
实现目标需要做很多事情:
1)在Icon
类中增加一个类型为bool
的公共属性。Icon
类也需要实现INotifyPropertyChanged
接口。你可以在这里找到一个教程:https://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged(v=vs.95).aspx
你需要添加的代码看起来像这样:
private bool isSelected;
public bool IsSelected
{
get
{
return isSelected;
}
set
{
isSelected = value;
OnPropertyChanged("IsSelected");
}
}
2)通过XAML
:
绑定该值<GridView.RowStyle>
<Style TargetType="{x:Type GridViewRow}">
<Setter Property="IsSelected" Value="{Binding IsSelected, UpdateSourceTrigger=PropertyChanged}"/>
</Style>
</GridView.RowStyle>
到目前为止,我们所取得的成就是,GridView
中的每个Icon
(代表Observable Collection
中的所有Icons
)如果在GridView
中选择它,则其IsSelected
属性将设置为true。
Observable Collection
中删除Icons
可以通过
完成public void RemoveIcon()
{
foreach (int i = MyContactInst.Count-1; i >= 0 ; i--)
{
if (icon.IsSelected == true)
{
MyContactInst.Remove(icon);
}
}
}
您可以通过events
或Command
绑定到按钮来触发此函数。