我在GridView数据绑定方面遇到了麻烦。
我在ViewModelGV.cs文件中创建了一个View Model。
class ViewModelGV
{
public ObservableCollection<Person> Persons{ get; set; }
public ViewModelGV()
{
Persons = new ObservableCollection<Person>();
Person person1 = new Person();
person1.Name = "John";
Persons.Add(person1);
Person person2 = new Person();
person2.Name = "Jack";
Persons.Add(person2);
Person person3 = new Person();
person3.Name = "Stephen";
Persons.Add(person3);
}
}
另一类具有简单Name属性的人。
class Person
{
private String _Name;
public String Name
{
get { return _Name; }
set { _Name = value; }
}
}
然后在我的XAML文件中,我将DataContext指向我的ViewModelGV(我添加了一些问号来标记代码中的重要点)。
<Page.DataContext>
<ViewModels:ViewModelGV/>
</Page.DataContext>
并添加了CollectionViewSource
<Page.Resources>
<CollectionViewSource x:Name="Src" IsSourceGrouped="False" ItemsPath="?" Source="{Binding Persons}" />
</Page.Resources>
我不知道如何指向特定项名称值,它可能与ItemsPath属性有关。
然后在我的GridView中,我想在下面创建一个带有Rectangle和TextBlock的StackPanel。
<Grid x:Name="LayoutGrid" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<GridView ItemsSource="{Binding Source={StaticResource Src}}">
<GridView.GroupStyle>
<GroupStyle>
<GroupStyle.Panel>
<ItemsPanelTemplate>
<StackPanel>
<Rectangle Fill="Red" Width="100" Height="100" />
<TextBlock Text="{Binding ? Name ? }" FontSize="40" />
</StackPanel>
</ItemsPanelTemplate>
</GroupStyle.Panel>
</GroupStyle>
</GridView.GroupStyle>
</GridView>
<TextBlock Text="{Binding Persons.Count}" Margin="0,200,0,0"></TextBlock>
</Grid>
这是显示正确计数但不适用模板和人员数据的结果
答案 0 :(得分:0)
你试过了吗?
<TextBlock Text="{Binding Person.Name}" FontSize="40" />
答案 1 :(得分:0)
我最近做了类似的事情,并且让它有效。尝试将您的xaml更改为以下
<GridView ItemsSource="{Binding Path=Persons, Mode=TwoWay}">
和
<TextBlock Text="{Binding Name}" FontSize="40"/>
我没有使用集合视图源,只是直接绑定到视图模型中的observable集合。希望这会有所帮助。