2016-11-09 51 views
0

项目拆除的ObservableCollection对象我有一个观察的集合:通过单击GridView的C#

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中的一个对象,然后单击删除按钮,从收集和GridView的删除它。有没有任何有效的方法来做到这一点?

感谢

回答

2

有达到你想要什么需要多个事情:

1)bool类型的公共属性添加到Icon类。 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)将其属性设置为true,如果您在0中选择它。

3)现在通过

public void RemoveIcon() 
{ 
    foreach (int i = MyContactInst.Count-1; i >= 0 ; i--) 
    { 
     if (icon.IsSelected == true) 
     { 
      MyContactInst.Remove(icon); 
     } 
    } 
} 

您移除Observable Collection正好可以做Icons您可以通过events或通过Command结合到一个按钮触发这个功能。