0

我正在编写一个 Windows 8 应用程序(XAML-C#-Windows Store 应用程序(地铁)),我必须在其中循环遍历 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。
“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: //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

于 2013-02-24T04:45:17.477 回答