Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获取列表框中所选项目的文本?_C#_Wpf - Fatal编程技术网

C# 如何获取列表框中所选项目的文本?

C# 如何获取列表框中所选项目的文本?,c#,wpf,C#,Wpf,我正在尝试从我的列表框中获取所选项目文本,如下图所示: 但我只能获得所选项目的类型,如下图所示: 这是我的代码,用于将所选项目设置为字符串 字符串selectedPackage=; 对于packageListBox.SelectedItems中的每个对象包 { selectedPackage+=selectedPackage==?:\n+packages.ToString; } 有没有办法将实际的Test123和Test321文本转换为字符串?这是因为您正在获取case包中模型对象的字符串表示

我正在尝试从我的列表框中获取所选项目文本,如下图所示:

但我只能获得所选项目的类型,如下图所示:

这是我的代码,用于将所选项目设置为字符串

字符串selectedPackage=; 对于packageListBox.SelectedItems中的每个对象包 { selectedPackage+=selectedPackage==?:\n+packages.ToString; }
有没有办法将实际的Test123和Test321文本转换为字符串?

这是因为您正在获取case包中模型对象的字符串表示形式。在访问所需的属性包实例之前,可以执行如下操作来提取ListBox的选定项

String selectedPackage = "";
foreach (object packages in packageListBox.SelectedItems)
   {
      var package = packages as Package
      if (package !=null)
       {
          //You can now use package object to extract the property you want.
       }
   }

使用LINQ Select方法从包集合中获取字符串集合。然后连接字符串:

string selectedPackages = string.Join("\n",
    packageListBox.SelectedItems.Cast<Package>().Select(p => p.PackageText));

将PackageText替换为实际的文本属性。

将packages变量强制转换为WPF.Models.Package,然后您应该能够访问它的属性。这是否回答了您的问题?你能分享你的xaml和包模型吗?下面的答案比使用as更好,使用一个像var Package=Packagepackages;这样的显式强制转换;。因此,无论出于何种原因,如果所选项目不是包,您将正确获得InvalidCastException。这是正确的。但是使用“as”的想法是捕获无效强制转换和null。也就是说,如果列表元素中存在空值。”as'将确保您列出的方案和可能的空项。SelectedItems集合从不包含空项。即使这样,显式强制转换仍然有效。使用as运算符将更加毫无意义。实际上,在显式强制转换合适的地方总是使用它只是一个坏习惯。@Clemens,请注意,您的回答可能会导致ArgumentNullException源绑定实例为null。你为什么这么想?SelectedItems属性从不为空。如果您这样想,为什么您的代码不处理这种情况?