0

私はWindows8アプリ(XAML-C#-Windowsストアアプリ(メトロ))を作成しています。このアプリでは、GridViewのSelectedItemsコレクションをループする必要があります。

これが私のコードです:

private void bottomAppBarBotonEliminar_Tapped(object sender, TappedRoutedEventArgs e)
{
    //Borrar el(los) elemento(s) seleccionado(s)
    foreach (GridViewItem elItem in GVElementos.SelectedItems)
    {
        MiColeccion.RemoveAt(GVElementos.Items.IndexOf(elItem));
    }
    ElementoSQL.Sincronizar(MiColeccion);
}

それを実行してそのメソッドを起動すると、次のエラーが発生します(スペイン語から翻訳):

An exception of type 'System.InvalidCastException' occurred 
in Lista.exe but was not handled in user code
Additional information: Unable to convert an object of 
type 'System.String' to the type 'Windows.UI.Xaml.Controls.GridViewItem'.

プログラムが中断すると、VisualStudioはforeachステートメントで行を強調表示します。

「GVElementos」はXAMLGridViewです。
タイプ「GridViewItem」および「GVElementos.SelectedItems」の「elItem」は、タイプ「GridViewItem」の要素のコレクションではありませんか?
私は何が間違っているのですか?GridViewを繰り返す別の方法はありますか?私はASP.NETから来ており、この方法が理にかなっています。

4

1 に答える 1

1

その例外は本当に明示的です。以前の動作中の実装からコードを貼り付けるのではなく、メッセージに注意を払う必要があります。特に、実装が別のフレームワークまたは環境からのものである場合!

基本的に、皆さんが質問のコメントで提案したように、例外として、文字列から GridViewItem への無効なキャストを行っていると述べています。

次のことを試してください。

foreach (string elItem in GVElementos.SelectedItems)
{
     MiColeccion.RemoveAt(GVElementos.Items.IndexOf(elItem));
}

コントロールのドキュメントを読むと、各項目が文字列オブジェクトであることがわかります。

クイックスタート リンクは次のとおりです

より具体的な例を次に示します: http://code.msdn.microsoft.com/windowsapps/ListViewSimple-d5fc27dd

于 2013-02-24T04:45:17.477 に答える