0

Windows 10 UWP アプリの開発を試して、足を濡らしています。私は Visual Studio 2015 をインストールしましたが、現在、データ バインディングの操作方法を理解しようとしています。

以下は私の単純な XAML です。

<Grid>
    <Pivot x:Name="docPivot"
           ItemsSource="{Binding}">
        <Pivot.ItemTemplate>
            <DataTemplate>
                <PivotItem Header="{Binding Filename}">
                    <TextBox Text="{Binding Contents}"/>
                </PivotItem>
            </DataTemplate>
        </Pivot.ItemTemplate>
    </Pivot>
</Grid>

これは、関連する部分の Mainpage.xaml.cpp です: (ドキュメントは、文字列ファイル名と文字列コンテンツの 2 つのプロパティを持つ単純な構造体です)。

MainPage::MainPage()
{
    InitializeComponent();

    auto docs = ref new Vector<Document^>();
    auto doc1 = ref new Document();
    doc1->Filename = "Filename1";
    doc1->Contents = "Contents 1";
    docs->Append(doc1);
    auto doc2 = ref new Document();
    doc2->Filename = "Filename2";
    doc2->Contents = "Contents 2";
    docs->Append(doc2);
    docPivot->ItemsSource = docs;
}

ただし、理解できない問題がいくつかあります。

1 つ目は、各 PivotItem のヘッダーが である代わりに、Filename両方とも MyApp.Document であり、MyApp は私の名前空間です。

2 つ目の問題は、TextBox にデータ バインディングからのコンテンツが適切に取り込まれており、2 つの PivotItems を切り替えることができるが、Textbox を選択しようとするとすぐに、アプリがアクセス違反でクラッシュすることです。

MyApp.exe の 0x0004CE1E で例外がスローされました: 0xC0000005: アクセス違反の読み取り場所 0x00000000。

ここで私が間違っていることについて何か意見はありますか?

4

1 に答える 1

1

Documentまず、Bindable 属性をクラスに追加する必要があります。

[Windows::UI::Xaml::Data::Bindable]
public ref class Document sealed

そして、追加する必要があります

#include "Document.h"

ファイルでMainpage.xaml.hはなく.cppファイル内。ピボットの ItemTemplate に PivotItem を含めないでください。このようにする必要があります

<Grid>
<Pivot x:Name="docPivot">
    <Pivot.HeaderTemplate>
        <DataTemplate>
            <ContentControl Content="{Binding Filename}"/>
        </DataTemplate>
    </Pivot.HeaderTemplate>
    <Pivot.ItemTemplate>
        <DataTemplate>
            <TextBox Text="{Binding Contents}"/>
        </DataTemplate>
    </Pivot.ItemTemplate>
</Pivot>

于 2015-08-07T04:19:31.487 に答える