从多个 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));
在谷歌搜索和搜索 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));