项目我有UWP应用一个GridView和我在的DataTemplate把按钮在每个GridView的项目,以便它可以被用来删除/移除特定从gridview中删除它(从移除它后面的observableCollection)。我没有使用MVVM的方法,因为我对它不太熟悉,我使用一个普通的Observable Collection来绑定数据和数据模板。UWP GridView控件与BUTTOM删除内的DataTemplate
如果你可以建议我一个更好的方法来做到这一点,myabe使用MVVM,请告诉我如何做到这一点。 在此先感谢
代码:
XAML网格视图(按钮,红背地面的按钮,我想使用删除项)
<controls:AdaptiveGridView Name="HistoryGridView" StretchContentForSingleRow="False"
Style="{StaticResource MainGridView}"
ItemClick ="HistoryGridView_SelectionChanged"
ItemsSource="{x:Bind HistoryVideos, Mode=OneWay}">
<controls:AdaptiveGridView.ItemTemplate>
<DataTemplate x:DataType="data:Video">
<StackPanel Margin="4" >
<Grid>
<Button Background="Red"
HorizontalAlignment="Right" VerticalAlignment="Top"
Height="36" Canvas.ZIndex="1"
Style="{StaticResource TransparentButton}" Width="36">
<fa:FontAwesome Icon="Close" FontSize="20" HorizontalAlignment="Center" Foreground="White"
/>
</Button>
<Image Canvas.ZIndex="0" Source="{x:Bind Thumbnail}" Style="{StaticResource GridViewImage}"/>
<Border Style="{StaticResource TimeBorder}" Height="Auto" VerticalAlignment="Bottom"
Canvas.ZIndex="1"
HorizontalAlignment="Left">
<TextBlock Text="{x:Bind Duration}" Foreground="White" Height="Auto"/>
</Border>
</Grid>
<TextBlock Text="{x:Bind Name}" Style="{StaticResource GridViewVideoName}"/>
<TextBlock Text="{x:Bind ParentName}" Style="{StaticResource GridViewParentName}"/>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch">
<TextBlock Text="{x:Bind Views}" Style="{StaticResource GridViewViews}"/>
<TextBlock Text="Views" HorizontalAlignment="Right"/>
</StackPanel>
</StackPanel>
</DataTemplate>
</controls:AdaptiveGridView.ItemTemplate>
</controls:AdaptiveGridView>
代码背后
public History()
{
this.InitializeComponent();
HistoryVideos = new ObservableCollection<Video>();
}
public ObservableCollection<Video> HistoryVideos { get; private set; }
我正在使用onnavigated来填充集合的方法,它工作正常,也我猜这不是相关的。
我可以问为什么我们使用Inotifyproeprtty改变了。 Observable Collection不具有内置的功能吗? – touseef
@touseef是的,你是对的,我已经更新了答案。'ObservableCollection'提供了在项目被添加,删除或整个列表刷新时的通知。 –
thnku,它看起来像一个很好的答案。但我一直在研究,我想这可以用x:Bind来完成,这是更高性能的。在这种情况下我们也不需要ICommand实现吗?是对的吗?如果可以,请您以这种方式提出实施建议? :) – touseef