我知道我发布了这个问题,但是在我的上一个问题上接受了答案,并且通过文章后我意识到这不是我想要的答案。我再次发布了一些示例代码。
我想用一个集合中的Data填充Grid(而不是DataGrid)。这是我的,但它不起作用。如果我删除集合并将DataContext设置为单个对象,则它可以工作,但不能作为集合。
XAML
Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<StackPanel>
<TextBlock Text="{Binding Path=StudentName}" />
</StackPanel>
</Grid>
MainPage.xaml.cs中
public MainPage()
{
InitializeComponent();
ObservableCollection<Student> ob = new ObservableCollection<Student>();
ob.Add(new Student()
{
StudentName = "James Jeffery"
});
ob.Add(new Student()
{
StudentName = "Sian Ellis"
});
this.DataContext = ob;
// Sample code to localize the ApplicationBar
//BuildLocalizedApplicationBar();
}
这一直困扰着我好几个小时。我似乎无法用一个集合填充网格。 Google上的每个示例都显示了ListViews等。我想填充网格,只有网格。
有关如何实现这一目标的任何建议吗?
答案 0 :(得分:1)
如另一个答案所述,您需要ItemsControl
:
<Window x:Class="MiscSamples.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<ItemsControl ItemsSource="{Binding}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid IsItemsHost="True" Rows="3" Columns="3"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBox Text="{Binding Name}" Margin="2"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Window>
代码背后:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new List<Student>
{
new Student() {Name = "James Jeffery"},
new Student() {Name = "Sian Ellis"},
new Student() {Name = "James Jeffery 2"},
new Student() {Name = "Sian Ellis 2"},
new Student() {Name = "James Jeffery 3"},
new Student() {Name = "Sian Ellis 3"},
};
}
}
输出:
答案 1 :(得分:0)
试用本教程:http://www.galasoft.ch/mydotnet/articles/article-2007041201.aspx