如何进行数据绑定?

时间:2013-01-25 00:16:26

标签: xaml windows-8 winrt-xaml

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

我有这个gridview

 <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;

        }

我也尝试将它传递给一个集合。

正如我所说,我根本无法使用XMAL的方式来完成它。

2 个答案:

答案 0 :(得分:1)

我相信您需要将GridView的ItemsSource绑定到集合。

请尝试按照以下步骤操作:

  1. MyPage上创建一个属性:public List<Test> Tests { get; set; }

  2. test2.DataContext = t;替换为Tests = ts;

  3. 在您的XAML中,添加ItemsSource属性,如下所示:

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

答案 1 :(得分:1)

要使其发挥作用的最小值是添加以下行:

test2.ItemsSource = ts;

但是你以后可能会遇到一些问题。

  1. DataContext设置在这里没有多大意义,你说你要将单个项作为你绑定元素的上下文到网格。通常,我会说DataContext将是一个包含您的测试集合的类 - 例如,您的页面的DataContext,然后您将拥有

    &lt; GridView Name =“test2”ItemsSource =“{Binding Tests}”&gt;

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

  2. 您可能希望使用List代替ObservableCollection,以便在从集合中添加和删除项目时自动通知数据绑定引擎。

    < / LI>