XAML Gridview直接添加项目

时间:2015-08-19 05:14:19

标签: vb.net xaml windows-8 winrt-xaml win-universal-app

我成功编写了一个XAML Gridview来显示项目列表。

但是,我想在Gridview的末尾添加一个[+(ADD ITEM)]按钮。

enter image description here

ADD按钮应具有与内容项不同的自定义模板(至少是默认按钮)。

我的XAML来源如下:

<GridView
            x:Name="itemGridView"
            AutomationProperties.AutomationId="ItemsGridView"
            AutomationProperties.Name="Items"
            TabIndex="1"
            Grid.RowSpan="2"
            Padding="116,136,116,46"
            ItemsSource="{Binding Source={StaticResource DataSource}}"
            SelectionMode="None"
            IsSwipeEnabled="false"
            IsItemClickEnabled="True"
            ItemClick="ItemView_ItemClick">
            <GridView.ItemTemplate>
                <DataTemplate>
                    <Grid HorizontalAlignment="Left" Width="250" Height="250">
                        <Border Background="{ThemeResource ListViewItemPlaceholderBackgroundThemeBrush}">
                            <StackPanel VerticalAlignment="Bottom" Background="{ThemeResource ListViewItemOverlayBackgroundThemeBrush}">
                                <TextBlock Text="{Binding Subject}" Foreground="{ThemeResource ListViewItemOverlayForegroundThemeBrush}" Style="{StaticResource BaseTextBlockStyle}" Height="60" Margin="15,0,15,0" FontWeight="SemiBold"/>
                                <TextBlock Text="{Binding TargetDate}" Foreground="{ThemeResource ListViewItemOverlaySecondaryForegroundThemeBrush}" Style="{StaticResource BaseTextBlockStyle}" TextWrapping="NoWrap" Margin="15,0,15,10" FontSize="12"/>
                            </StackPanel>
                        </Border>
                    </Grid>
                </DataTemplate>
            </GridView.ItemTemplate>
            <!--
            Something like that..
            <Button Content="+" x:Name="btnAdd" /> 
            -->
        </GridView>

而且,如何向XAML添加ADD按钮(网格项)?感谢

1 个答案:

答案 0 :(得分:0)

您可以使用Phone来实现这一点,基本上您需要做的是:

  1. 定义另一个代表GridView“addItem”的类

    DataTemplateSelector
  2. 确保您的public class GridItem { public String Subject { get; set; } public String TargetDate { get; set; } } public class AddGridItem : GridItem { public bool IsGridItem { get; set; } } GridView集合中始终包含ItemSource

    AddGridItem
  3. 创建一个private ObservableCollection<GridItem> _gridItems =new ObservableCollection<GridItem>() { new GridItem() { Subject = "Subject1", TargetDate = "TargetDate" },new GridItem() { Subject = "Subject2", TargetDate = "TargetDate" },new GridItem() { Subject = "Subject3", TargetDate = "TargetDate" },new AddGridItem() { IsGridItem = true } }; public ObservableCollection<GridItem> GridItems { get { return _gridItems; } set { if (_gridItems == value) { return; } _gridItems = value; } } 类,根据项类型返回相应的DataTemplateSelector

    DataTemplate
  4. 将您的dataTempaltes和public class MyDataTemplateSelector : DataTemplateSelector { public DataTemplate RegularTemplate { get; set; } public DataTemplate AddTemplate { get; set; } protected override DataTemplate SelectTemplateCore(object item, DependencyObject container) { if (item is AddGridItem) return AddTemplate; if (item is GridItem) return RegularTemplate; return base.SelectTemplateCore(item, container); } } 定义为DataTemplateSelector,以便在staticresources

    中使用它们
    GridView