通过点击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中删除。有什么有效的方法吗?

谢谢

通过点击gridviewc#中的一个项目,从ObservableCollection中移除一个对象

实现目标需要做很多事情:

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);
        }
    }
 }

您可以通过eventsCommand绑定到按钮来触发此函数。

相关文章: