使用 Foreach 检索 ListBoxItem 的内容

问题描述 投票:0回答:1

这是我的 ListView 和文本框的设置,用于显示作为字符串选择的项目。

<ListView Name="myListView" SelectionChanged="myListBox_SelectionChanged_1" SelectionMode="Multiple">
    <ListViewItem Content="Item 1"/>
    <ListViewItem Content="Item 2"/>
    <ListViewItem Content="Item 3"/>
</ListView>
<TextBox Name="tb" Width="140" Height="30" Margin="20"/>

这是成功输出ListViewItem的值的行。

string output = ((ListBoxItem)myListView.SelectedItem).Content.ToString();
/// output: Item 1

但是我不知道如何在foreach循环中实现它

foreach (ListBoxItem item in myListView.SelectedItems)
{
    string output = item.ToString();
    tb.AppendText(output);
}

foreach 循环当前输出:

System.Windows.Controls.ListViewItem: {the ListViewItem value}

我想去掉前面的“System.Windows...”。

我尝试将此行放在 foreach 循环中,但它只输出选定的第一个 ListViewItem 的值。

string output = ((ListBoxItem)myListView.SelectedItem).Content.ToString();

预期输出应为文本框中的“Item 1 Item 2...”。

c# wpf
1个回答
0
投票

object.ToString
未被覆盖时,它返回
object.GetType().ToString()
,这使得
object.ToString
返回类型的完全限定名称。

要删除命名空间,您可以引用

Type.Name
属性。

然后,为了提高 UI 的性能,请勿通过连接其值来重复更新

TextBox
。这根本没有效率。
相反,使用
StringBuilder
构建文本值并更新
TextBox
一次:

var textBoxValueBuilder = new SringBuilder();
foreach (ListBoxItem item in myListView.SelectedItems)
{
  string output = item.GetType().Name;
  textBoxValueBuilder.Append(output);
}

tb.Text = textBoxValueBuilder.ToString();
© www.soinside.com 2019 - 2024. All rights reserved.