我有一个有“财产”名称和“教育”的班级学生。我已经向学生填写了一个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的容器,它显示两个属性。
答案 0 :(得分:1)
正如您可能看到的那样 - DisplayMemberPath
只能设置为一个属性,因此如果您需要显示的不仅仅是一个非常基本的单个文本字符串 - 您可能需要设置ItemTemplate
像这样。
<GridView ...>
<GridView.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Name}"/>
<TextBlock Text="{Binding Education}"/>
</StackPanel>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
当然,您可能还有一个字符串属性,其中两行文本用"\r\n"
分隔 - 这可能适用于一些非常简单的情况。