我有一个可观察的集合:
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中删除。有没有有效的方法呢?
由于
答案 0 :(得分: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>
到目前为止,我们取得的成就是Icon
中的每个GridView
(在您的Icons
中重复所有Observable Collection
)都会设置IsSelected
属性集如果您在GridView
中选择它,则为true。
3)现在从Icons
删除Observable Collection
只能通过
public void RemoveIcon()
{
foreach (int i = MyContactInst.Count-1; i >= 0 ; i--)
{
if (icon.IsSelected == true)
{
MyContactInst.Remove(icon);
}
}
}
您可以通过events
或Command
绑定到按钮来触发此功能。