Xaml 如何进行数据绑定?

Xaml 如何进行数据绑定?,xaml,windows-8,winrt-xaml,Xaml,Windows 8,Winrt Xaml,我正在尝试用XAML做一些简单的数据绑定,但它对我不起作用,我也不知道为什么 我有这个网格视图 <GridView Name="test2"> <GridView.ItemTemplate> <DataTemplate> <StackPanel> <TextBlock Text="{Binding

我正在尝试用XAML做一些简单的数据绑定,但它对我不起作用,我也不知道为什么

我有这个网格视图

 <GridView Name="test2">
            <GridView.ItemTemplate>
                <DataTemplate>
                    <StackPanel>
                        <TextBlock Text="{Binding Header}" FontWeight="Bold" Style="{StaticResource ItemTextStyle}"/>
                        <TextBlock Text="{Binding Item}" FontWeight="Bold" Style="{StaticResource ItemTextStyle}"/>
                    </StackPanel>
                </DataTemplate>
            </GridView.ItemTemplate>
            <GridView.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel Orientation="Horizontal"/>
                </ItemsPanelTemplate>
            </GridView.ItemsPanel>
        </GridView>

我现在正试着绑起来。我试着用XMAL(崩溃)和C#代码(什么也没发生)来实现它

在代码隐藏构造函数中,我尝试这样做

 public MyPage()
        {
            this.InitializeComponent();

            Test t = new Test
            {
                Header = "Header 1",
                Item = "Item 1",

            };

            List<Test> ts = new List<Test>();
            ts.Add(t);
            test2.DataContext = t;

        }
publicMyPage()
{
this.InitializeComponent();
测试t=新测试
{
Header=“Header 1”,
Item=“Item 1”,
};
列表ts=新列表();
ts.Add(t);
test2.DataContext=t;
}
我也试着给它一个收藏


正如我所说,我根本无法使用XMAL方法来完成这项工作。

我认为您需要将GridView的
项源
绑定到集合中

尝试以下步骤:

  • MyPage
    上创建属性:
    公共列表测试{get;set;}

  • 替换
    test2.DataContext=t带有
    测试=ts

  • 在XAML中,添加一个
    ItemsSource
    属性,如下所示:

    <GridView Name="test2" ItemsSource="{Binding Tests}">
    
    
    

  • 要使其正常工作,至少要添加以下行:

    test2.ItemsSource = ts;
    
    但是你没有什么东西会在以后给你带来麻烦

  • DataContext
    设置在这里没有多大意义,您的意思是要为绑定到网格的元素创建一个single项。通常,我会说DataContext将是一个包含测试集合的类——例如,这将是页面的DataContext,然后您将拥有

    其中,
    Tests
    是用作
    DataContext
    的任何类的属性。您希望使DataContext成为您在代码中设置的唯一内容,然后所有其他内容都从绑定中流出

  • 您可能不想使用
    列表
    ,而是想使用
    ObservableCollection
    ,以便在向集合中添加和删除项目时自动通知数据绑定引擎


  • 嗨,你的第一行行行。我有几个问题,你是说你应该创建一个类作为DataContent,这样你就可以对单个网格进行更多的绑定?第二个问题是,如果我想要一个项目集合,那么会发生什么?我是否也要进行ObservableCollection,以及我的绑定必须如何更改?对第一个问题是,该类成为您的ViewModel,它是页面的DataContext,然后您可以在XAML而不是代码中设置ItemsSource。如果您想让UI反映在列表中添加和删除项的时间,比如测试列表,那么“是”“使用ObservableCollection”,它封装了通知列表更改绑定结束的代码。对于单个项目,如测试本身,在为页面指定DataContext时,您将希望实现InotifyPropertyChanged。你是说我应该把虚拟机挂到页面而不是网格控件上吗?是的,这不是一个硬性的规则,DataContext可以在任何地方设置,但是当你正在学习如何工作时,这是最简单的方法。有很多很好的示例,包括数据绑定,at和默认网格和拆分模板还将演示如何在页面上设置DataContext,并绑定到ViewModel的集合