0

画像と画像に関連するいくつかのコンテンツを表示する単純な地下鉄アプリを作成しています。

例 : image : data img1 : "蝶の画像" img2 : "Hello sky" img3 : "ゴールデンレトリバーの写真"

画像をフリップビューにロードしました。関連データを配列にロードしました。

<FlipView HorizontalAlignment="Left" Margin="102,147,0,0" VerticalAlignment="Top" Width="627" Height="429" Name="fiImage" SelectionChanged="fiImage_SelectionChanged">
      <Image Source="Assets/image1.png"  Name="Img1" />
      <Image Source="Assets/image2.png"  Name="Img2" />
</FlipView>

「tbN」という名前の xaml に TextBlock があります。私がやりたいことは、ポインターを使用して画像を変更すると、関連するデータがテキストブロックに表示されることです。

選択変更イベントで次のコードを試しました

private void fiImage_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    int i = ((FlipView)sender).SelectedIndex;
    tbN.Text = a[i];  //error line
}

しかし、プログラムを実行すると、「NullReferenceException がユーザー コードによって処理されませんでした: オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが表示されます。

私は何が欠けていますか?

4

3 に答える 3

0

a[i]は初期化されておらず、値がないようです。グローバル変数ですか?コードをデバッグし、その内容を確認します。null でなければなりません。

null でない場合、その配列にi値がない可能性があります。または、配列の長さを超えている可能性があります。

tbN.Text = a[i]; //a[i] must be null, where is it initialized?
于 2013-05-07T07:47:11.990 に答える
0

SelectionChanged イベントは、初期化時にも発生します (最初の子が「選択されました」)。あなたのコントロール (tbN) は、その時点では存在しません。

NRef を回避するために、tbN が null かどうかを確認します。例外!

private void fiImage_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if (tbN != null)
    {
        int i = ((FlipView)sender).SelectedIndex;
        tbN.Text = a[i]; 
    }
}
于 2014-06-25T20:42:17.067 に答える