使用WinRT在一个itemcontainer中显示两个属性

时间:2014-11-07 07:45:07

标签: c# gridview winrt-xaml

我有一个有“财产”名称和“教育”的班级学生。我已经向学生填写了一个ObservableCollection,并将gridview的ItemsSource设置为此ObservableCollection。

现在我知道我可以设置displaymemberpath来显示gridview中的属性。但是我试图用ItemTemplate在同一个gridview中获取这两个属性。我希望它们与上面的属性水平对齐。像这样:

学生1 ......学生2 ......学生3 ......学生4 ......学生5

教育1 ...教育2 ...教育3 ...教育4 ...教育5

我尝试了以下内容:

<Style TargetType="GridView">
    <Setter Property="ItemsPanel">
        <Setter.Value>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Horizontal" VerticalAlignment="Center"/>
            </ItemsPanelTemplate>
        </Setter.Value>
    </Setter>
</Style>

这使类水平对齐如下,但我无法设置StackPanel的DisplayMemberPath:

App.Student ... App.Student ... App.Student ... App.Student ... App.Student

任何人都可以通过ItemTemplate和One容器向我提示如何使用上述示例吗?

P.S。我知道这可以通过两个单独的容器/堆叠面板或其他方式轻松完成。但我正在尝试学习更多有关ItemTemplates的内容,因此我想要一个带有ItemTemplate的容器,它显示两个属性。

1 个答案:

答案 0 :(得分:1)

正如您可能看到的那样 - DisplayMemberPath只能设置为一个属性,因此如果您需要显示的不仅仅是一个非常基本的单个文本字符串 - 您可能需要设置ItemTemplate像这样。

<GridView ...>
    <GridView.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <TextBlock Text="{Binding Name}"/>
                <TextBlock Text="{Binding Education}"/>
            </StackPanel>
        </DataTemplate>
    </GridView.ItemTemplate>
</GridView>

当然,您可能还有一个字符串属性,其中两行文本用"\r\n"分隔 - 这可能适用于一些非常简单的情况。