C# 如何获取列表框中所选项目的文本?
我正在尝试从我的列表框中获取所选项目文本,如下图所示: 但我只能获得所选项目的类型,如下图所示: 这是我的代码,用于将所选项目设置为字符串 字符串selectedPackage=; 对于packageListBox.SelectedItems中的每个对象包 { selectedPackage+=selectedPackage==?:\n+packages.ToString; }C# 如何获取列表框中所选项目的文本?,c#,wpf,C#,Wpf,我正在尝试从我的列表框中获取所选项目文本,如下图所示: 但我只能获得所选项目的类型,如下图所示: 这是我的代码,用于将所选项目设置为字符串 字符串selectedPackage=; 对于packageListBox.SelectedItems中的每个对象包 { selectedPackage+=selectedPackage==?:\n+packages.ToString; } 有没有办法将实际的Test123和Test321文本转换为字符串?这是因为您正在获取case包中模型对象的字符串表示
有没有办法将实际的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属性从不为空。如果您这样想,为什么您的代码不处理这种情况?