Windows StoreApp XAML:根据数据类型更改GridView中的ItemTemplate

黑眼圈

我正在使用C#/ XAML开发Windows Store App。我主要在iOS方面有经验,在某种程度上也有Android应用程序开发方面的经验,但对C#/ XAML世界还不太满意。

这是我在基于GridView的页面中的问题(基于VS2012生成的漂亮模板)。

我有一个gridview,它的集合绑定到从网络检索的数据,并且工作正常。但是我想根据数据更改网格项。例如:我有一些文件和文件夹,我想使用不同的网格视图项目来显示。

我的问题:我将如何根据数据对ItemTemplate使用不同的DataTemplate?例如,对于“文件夹”,我将只有一个垂直居中的文本块,对于文件,我将有2个文本块并且在视觉上有所不同。

我是走正确的道路还是应该做完全不同的事情?

XAML部分是

<GridView
            x:Name="itemGridView"
            AutomationProperties.AutomationId="ItemGridView"
            AutomationProperties.Name="Grouped Items"
            Grid.RowSpan="3"
            Padding="116,137,40,46"
            ItemsSource="{Binding Source={StaticResource groupedItemsViewSource}}"
            ItemTemplate="{StaticResource FileEntriesTemplate}"
            ItemClick="ItemView_ItemClick"
            IsItemClickEnabled="True"
            SelectionMode="None"
            IsSwipeEnabled="false">

模板是

<DataTemplate x:Key="FileEntriesTemplate">
<Grid HorizontalAlignment="Left" Width="400" Height="80" Background="Beige">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="80"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <Image Source="{Binding Image}" Stretch="Uniform" Grid.Column="0" Margin="10,0,0,0" AutomationProperties.Name="{Binding Title}"/>

    <StackPanel Orientation="Vertical" Grid.Column="1" Background="Transparent">
        <TextBlock Text="{Binding Title}" Foreground="Black" Style="{StaticResource LargeTitleTextStyle}" Margin="20,20,10,0"/>
        <TextBlock Text="{Binding Subtitle}" Foreground="gray" Style="{StaticResource CaptionTextStyle}" TextWrapping="NoWrap" Margin="20,10,0,30"/>
    </StackPanel>
</Grid>

奈杰尔·桑普森(Nigel Sampson)

GridView通过ItemTemplateSelector属性公开此属性,您可以创建一个从DataTemplateSelector继承的类。一个例子是我有一个GridView绑定了“问题”和“存储库”,并且希望为每个视图使用不同的数据模板。

我的数据模板选择器如下所示:

public class IssueSummaryTemplateSelector : DataTemplateSelector
{
    protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)
    {
        return item is IssueGroupViewModel ? IssueTemplate : RepositoryTemplate;
    }

    public DataTemplate RepositoryTemplate
    {
        get;
        set;
    }

    public DataTemplate IssueTemplate
    {
        get;
        set;
    }
}

然后,我将选择器声明为xaml中的资源,分配要用于存储库和问题的两个模板。

<selectors:IssueSummaryTemplateSelector x:Key="IssueSummarySelector"
                                        IssueTemplate="{StaticResource IssueGridZoomedOutTemplate}"
                                        RepositoryTemplate="{StaticResource IssueGridRepositoryZoomedOutTemplate}"/>

然后,您可以在GridView上使用它。

<GridView ItemTemplateSelector="{StaticResource IssueSummarySelector}" />

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我应该参考哪个库才能在Windows 8.1 StoreApp中使用SQLite

Windows库中是否有树数据类型?

Windows.h中的CALLBACK数据类型是什么?

Windows编程和数据类型

根据列的原始数据类型更改 Pandas Dataframe 中列的数据类型

根据 R 中预定义数据类型的数据框更改每个数据框列的数据类型

将“ WINAPI”数据类型从Windows移植到Linux

如何在Windows Powershell中转换数据类型?

在 Windows x64 上将 numpy.int64 数据类型解释为 Python 中的本机 int 数据类型

以编程方式更改GridView ItemTemplate中的数据绑定属性

在Windows 7中更改文件类型说明

根据具有R中匹配列的模板更改数据框列的数据类型

如何根据python中的条件更改多个数据框列的数据类型?

如何在 Xaml 中完成“Windows”类型的 DependencyProperty

Windows Phone XAML数据绑定

在grep中处理“ Windows”类型的数据

在rdd中更改数据类型

更改Piglatin中列的数据类型

更改Pandas中列的数据类型

在 Pyspark 中更改数据类型

更改 R 中的数据类型

在 PostgreSQL 中更改计算的数据类型

如何根据ng-repeat中的数据类型更改样式

Spark DataFrame根据列条件更改数据类型

在 MS Access 中保存来自 VB.Net Windows 窗体的数据,出现错误 System.Data.OleDb.OleDbException:“条件表达式中的数据类型不匹配。”

在通用Windows应用程序中,如果视图模型中的属性发生更改,如何使用xaml和数据绑定更改按钮的背景色

根据模板在PYTHON中具有匹配的列名称更改熊猫数据框列的数据类型

JNA-映射本机Windows数据类型(IN和OUT参数)

在Windows窗体文本字段上指定数据类型