2016-11-09 100 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結合到一個按鈕觸發這個功能。