从多个 ListBoxItems 获取内容并转换为字符串

Get Content from Multiple ListBoxItems and Cast to String

在谷歌搜索和搜索 Whosebug 上花了很多时间,但解决方案不是我正在寻找的,或者我没有完全正确地实施。不要认为这有什么大不了的,所以希望有人可以提供解决方案(有点太菜鸟了,所以需要更多详细信息请告诉我)。

我正在尝试从 W8.1 通用 XAML 应用程序的列表框中获取多个项目的值,以便我可以将它们传递给 SQLite 数据库(我认为是一个使用逗号分隔的字符串'join' 语句)。 ListItems 的数据源当前为各种值手动设置。

与此同时,我正在为字符串的文本设置一个标签作为测试,但在列表框中使用复选框并没有带来任何乐趣,因此我已更改为 ListBoxItems,但我没有通过以下内容(选择两个列表项时):

Windows.UI.Xaml.Controls.ListBoxItem, Windows.UI.Xaml.Controls.ListBoxItem

显然我在寻找内容,应该是 'Developer' 和 'Tester'。这是列表框的 XAML 和我当前的代码:

<TextBlock x:Name="lblAreas" HorizontalAlignment="Left" Margin="548,200,0,0" TextWrapping="Wrap" Text="Areas of Interest" VerticalAlignment="Top" RenderTransformOrigin="1.143,1.692" FontSize="13.333" Height="32" Width="336"/>
    <ListBox x:Name="lbAreas" HorizontalAlignment="Left" Height="231" Margin="548,241,0,0" VerticalAlignment="Top" Width="194" SelectionMode="Multiple">
        <ListBoxItem Content="Developer"/>
        <ListBoxItem Content="Tester"/>
    </ListBox>

后面的代码:

var listSelectedItems = lbAreas.SelectedItems.ToList();
string strSelectAreas = string.Join(", ", listSelectedItems);
lblAreas.Text = strSelectAreas;

希望一切都有意义,我已经尝试了 SO 和其他地方的各种方法,这些方法看起来应该有效,但并不完全有效!感谢您的帮助。

SelectedItems returns 一个对象列表,这些对象的字符串表示是默认值(即 class 的名称)。您实际上是每个选定项目的 Content 属性,所以类似于:

string selectAreas = string.Join(", ", lbAreas.SelectedItems.Select(i => i.Content));

lblAreas.Text = selectAreas;

注意:您可能必须将每个项目都转换为 ListBoxItem:

string selectAreas = string.Join(", ", lbAreas.SelectedItems.Cast<ListBoxItem>()
                                                            .Select(i => i.Content));