0

我正在尝试在 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;

        }

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

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

4

2 回答 2

1

我相信您需要将ItemsSourceGridView 绑定到集合。

尝试按照以下步骤操作:

  1. 在 上创建属性MyPagepublic List<Test> Tests { get; set; }

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

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

    <GridView Name="test2" ItemsSource="{Binding Tests}">
    
于 2013-01-25T00:29:39.740 回答
1

使其工作的最低要求是添加以下行:

test2.ItemsSource = ts;

但是你有一些事情可能会在以后给你带来问题。

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

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

    whereTests是您用作DataContext. 您想让 DataContext 成为您在代码中设置的唯一内容,然后其他所有内容都来自绑定。

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

于 2013-01-25T04:22:06.850 回答