2013-02-24 2 views
0

Я пишу приложение Windows 8 (приложение XAML-C# -Windows Store (метро)), где мне нужно прокрутить коллекцию SelectedItems GridView.System.InvalidCastException во время цикла через 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'. 

Когда программа брейки, Visual Studio выделяет строку с помощью инструкции foreach.

"GVElementos" - это XAML GridView.
Не является ли «elItem» типа «GridViewItem» и «GVElementos.SelectedItems» набором элементов типа «GridViewItem»?
Что я делаю неправильно? Есть ли другой способ итерации GridView? Я пришел из ASP.NET, где этот способ делать это имеет смысл.

+1

Вы обратили внимание на сообщение? Он говорит, что элемент является строкой. Забудьте о том, что вы знаете из ASP.NET, вы используете другую структуру с различными элементами управления. Узнайте, как их использовать. Первый шаг (в данном случае) распознает сообщение об ошибке. Следующий шаг - проконсультироваться с документацией и узнать больше о инструментах, которые вы используете. –

+0

Я думаю, что @AnthonyPegram говорит «Нет», на ваш вопрос _Isn't «elItem» типа «GridViewItem» и «GVElementos.SelectedItems» представляет собой набор элементов типа «GridViewItem»? _ :-) Проверьте MSDN doco, как было предложено, чтобы подтвердить свое понимание используемых вами инструментов, прежде чем обращаться за помощью. – Sepster

+0

Вы правы, меня смущает то, что я знаю из ASP.NET. Сначала я должен прочитать документы. Почему-то я думал, что здесь будут дружелюбные люди. Спасибо, что нашли время ответить. –

ответ

1

Это исключение действительно явно. Вы должны обратить внимание на сообщение вместо вставки кода из предыдущей рабочей реализации. Специально, если ваша реализация осуществляется из другой среды или среды!

В основном, как ребята предлагали комментарии к вашему вопросу, а в качестве исключений вы делаете неверный листинг из строки в GridViewItem.

Try выполнив следующие действия:

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

Если вы читаете документацию управления, вы поймете, что каждый элемент является строкой объекта.

Вот ссылка Quickstart: http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh780650.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2

А вот более конкретный пример: http://code.msdn.microsoft.com/windowsapps/ListViewSimple-d5fc27dd

Смежные вопросы