我使用GridView显示照片,并以优雅的方式搜索,以允许用户向表单添加新项目。
在此页面中我需要显示照片列表:由于照片代表表单的“子子项”,我不会通过CommandBar管理新照片的添加。但我想在包含照片的GridView的最后一项之后使用“添加”按钮。
这是XAML:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBlock Text="Photos" Grid.Row="0"/>
<StackPanel Orientation="Horizontal" Grid.Row="1">
<GridView ItemsSource="{Binding images}">
<GridView.ItemTemplate>
<DataTemplate>
<Border BorderBrush="Gray" BorderThickness="1"
Padding="10"
Height="150" Width="190">
<Image Stretch="UniformToFill"
Source="{Binding bitmap_image}" />
</Border>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
<Border BorderBrush="Gray" BorderThickness="1"
Padding="10"
Height="150" Width="190">
<Button Command="{Binding Path=DataContext.AddPhotoCommand, ElementName=DetailsPage}"
Height="100" Width="100">
<Viewbox>
<SymbolIcon Symbol="Add"/>
</Viewbox>
</Button>
</Border>
</StackPanel>
</Grid>
当我使用StackPanel时,如果我显示3张照片,则不再显示“添加”按钮...
=&GT;有一个更好的方法吗?或者你看到另一种选择?我正在寻找通过DataTemplateSelector执行此操作,但这需要我创建一个“false”对象来显示添加按钮...
答案 0 :(得分:1)
当我使用StackPanel时,如果我显示3张照片,则不再显示“添加”按钮...
如果您不介意该按钮位于上一张照片的下一行,则可以使用WinRTXamlToolkit WrapPanel
而不是StackPanel
来避免图片从窗口中移出并将按钮放在GridView
&#39; FooterTemplate
中:
的Xaml:
<Page
x:Class="AddButtonSample.MainPage"
xmlns:controls="using:WinRTXamlToolkit.Controls"
...
mc:Ignorable="d">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBlock Text="Photos" Grid.Row="0"/>
<controls:WrapPanel Orientation="Horizontal" Grid.Row="1">
<GridView ItemsSource="{Binding images}">
<GridView.FooterTemplate>
<DataTemplate>
<Button Command="{Binding Path=AddPhotoCommand}" Height="100" Width="100">
<Viewbox>
<SymbolIcon Symbol="Add"/>
</Viewbox>
</Button>
</DataTemplate>
</GridView.FooterTemplate>
<GridView.ItemTemplate>
<DataTemplate>
<Border BorderBrush="Gray" BorderThickness="1"
Padding="10"
Height="150" Width="190">
<Image Stretch="UniformToFill"
Source="{Binding bitmap_image}" />
</Border>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
</controls:WrapPanel>
</Grid>
如果你真的想在GridView
的最后一项之后并排放置Button。唯一的选项是DataTemplateSelector
。
答案 1 :(得分:0)
最好的解决方案可能是使用CommandBar
并添加&#34;添加&#34;按钮位于面板的最底部,因为这与UWP设计指南最为一致。 GridView
还有一个FooterTemplate
,它允许您在整个GridView
的页脚中添加一些XAML(但不是直接在项目之后)。
如果您仍希望将添加项目作为GridView
内容的一部分,则您确实需要使用假项目和DataTemplateSelector
。这个解决方案不是很干净,但可能是唯一简单的方法。
答案 2 :(得分:0)
我也尝试为自己的应用程序做类似的事情,但实际上并没有明显的方法来实现它。关于我的应用程序功能的一些背景知识:这是一个抽认卡应用程序,可在首页的gridview中显示卡片组,并在gridview的前面显示添加按钮。这就是我所做的:
cv2
属性bool
isButton
设置为isButton
true
属性isButton
是isButton
,则模板选择器将使用按钮模板