2013-05-01 112 views
1

我正在使用GroupedItemsPage.xaml。我已将项目源设置为“组”列表,其中“组”是我的自定义类,其中显示不同的组以及其中的项目。我的问题是,我想为每个组添加一个“添加”按钮,以便每次加载组时,都会显示“添加”按钮,而不管组中是否包含项目。 enter image description here 第一张图片是我希望我的群组在添加一些项目后的样子。第二个图像是我希望我的小组在未添加任何项目时查看。我如何继续?我正在使用以下网格视图样式。gridview中的默认按钮

<Style TargetType="GridView" x:Key="GridViewStyle"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="GridView"> 
        <Border BorderBrush="{TemplateBinding BorderBrush}" 
         BorderThickness="{TemplateBinding BorderThickness}" 
         Background="{TemplateBinding Background}"> 
         <ScrollViewer x:Name="ScrollViewer" 
             TabNavigation="{TemplateBinding TabNavigation}" 
             HorizontalScrollMode="{TemplateBinding ScrollViewer.HorizontalScrollMode}" 
             HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}" 
             IsHorizontalScrollChainingEnabled="{TemplateBinding ScrollViewer.IsHorizontalScrollChainingEnabled}" 
             VerticalScrollMode="{TemplateBinding ScrollViewer.VerticalScrollMode}" 
             VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}" 
             IsVerticalScrollChainingEnabled="{TemplateBinding ScrollViewer.IsVerticalScrollChainingEnabled}" 
             IsHorizontalRailEnabled="{TemplateBinding ScrollViewer.IsHorizontalRailEnabled}" 
             IsVerticalRailEnabled="{TemplateBinding ScrollViewer.IsVerticalRailEnabled}" 
             ZoomMode="{TemplateBinding ScrollViewer.ZoomMode}" 
             IsDeferredScrollingEnabled="{TemplateBinding ScrollViewer.IsDeferredScrollingEnabled}" 
             BringIntoViewOnFocusChange="{TemplateBinding ScrollViewer.BringIntoViewOnFocusChange}"> 
          <Grid Height="765" Width="2666" Margin="0"> 
           <Grid.ColumnDefinitions> 
            <ColumnDefinition Width="*" /> 
           </Grid.ColumnDefinitions> 

           <!-- Your custom buttons --> 
           <Grid x:Name="myGrid" HorizontalAlignment="Left" Width="1108" DataContext="{Binding RelativeSource={RelativeSource Self}}" > 
            <Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}" Margin="0,0,10,0"> 
             <Image Source="Assets/Untitled.png" Stretch="UniformToFill" AutomationProperties.Name="{Binding Title}"/> 
            </Border> 
            <StackPanel VerticalAlignment="Top" Height="755" Margin="0,0,0,0"> 

             <TextBlock Text="RoleCenter" Style="{StaticResource PageHeaderTextStyle}" Height="77" Margin="140,50,0,0"/> 
             <TextBlock Text="{Binding x}" Style="{StaticResource PageHeaderTextStyle}" Height="77" Margin="140,300"/> 
            </StackPanel> 

           </Grid> 


           <ItemsPresenter 
              HeaderTemplate="{TemplateBinding HeaderTemplate}" 
              Header="{TemplateBinding Header}" 
              HeaderTransitions="{TemplateBinding HeaderTransitions}" 

              Padding="{TemplateBinding Padding}" Margin="1113,10,244,0" /> 

           <StackPanel Width="150" Height="150" Background="#006AC1" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,100,0"> 
            <Button x:Name="LoadMore" Content="+" Height="150" Click="Navigate" Width="150" /> 


           </StackPanel> 
          </Grid> 
         </ScrollViewer> 
        </Border> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

回答

0

通常,GridView绑定到一个ViewModel集合。大多数人通常为其集合的每个组添加一个“空/空”ViewModel,并使GridView交换模板以用于使用ItemTemplateSelector呈现该ViewModel。

查看SO问题WinRT gridview Add tile作为参考。这里有一个很好的示例实现。

这里也是一个视频,它展示了这个概念在14:23开始的行动中进入视频。 http://channel9.msdn.com/Series/Migrating-apps-from-Windows-Phone-to-Windows-8/Binding-the-Interface-in-Windows-Store-apps

+0

Thanx :)那正是我所期待的!我昨天通过向DefaultViewModel添加了一个额外的元素完成了这项任务,但是这个解决方案要好得多。现在就试试吧:) – Vanya 2013-05-02 05:45:38