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 は Tests のコレクションを含むクラスになると思います。たとえば、それはページの DataContext になります。

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

    whereTestsは、 として使用するクラスのプロパティですDataContext。コードで設定するのは DataContext だけにしたい場合は、それ以外はすべてバインディングから流れます。

  2. の代わりにList、おそらく を使用しObservableCollectionて、アイテムがコレクションに追加されたりコレクションから削除されたりしたときに、データ バインディング エンジンに自動的に通知されるようにします。

于 2013-01-25T04:22:06.850 に答える