У меня есть List
из Lists
и отобразить его с вложенными ListBoxes
:Получить все выбранные элементы на нескольких вложенных друг в друга ListBoxes с SelectionMode Multiple/Расширенная
MainWindow.xaml.cs
using System.Collections.Generic;
namespace WPF_Sandbox
{
public partial class MainWindow
{
public IEnumerable<IEnumerable<string>> ListOfStringLists { get; set; } = new[] { new[] { "a", "b" }, new[] { "c", "d" } };
public MainWindow()
{
InitializeComponent();
DoSomethingButton.Click += (sender, e) =>
{
// do something with all selected items
};
}
}
}
MainWindow. xaml
<Window x:Class="WPF_Sandbox.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow"
x:Name="ThisControl">
<StackPanel>
<ListBox ItemsSource="{Binding ListOfStringLists, ElementName=ThisControl}">
<ListBox.ItemTemplate>
<ItemContainerTemplate>
<ListBox ItemsSource="{Binding}" SelectionMode="Multiple">
<ListBox.ItemTemplate>
<ItemContainerTemplate>
<TextBlock Text="{Binding}" />
</ItemContainerTemplate>
</ListBox.ItemTemplate>
</ListBox>
</ItemContainerTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Button Name="DoSomethingButton" Content="DoSomething" />
</StackPanel>
</Window>
Как я могу получить все выбранные элементы по всем ListBoxes
?
Я нашел fewsolutions, получив один выбранный элемент, но не смог понять, как это сделать в моем сценарии.
У меня есть идея, как это сделать, обернув массивы string
, но я бы предпочел не делать этого.
«Обертывание строковых массивов» означает запись режимов просмотра?Вы должны написать viewmodels. –
@EdPlunkett Даже если бы я использовал MVVM для этого приложения (чего я не по разным причинам), было бы досадно «разбить» список списков. Я бы хотел, чтобы моя модель просмотра содержала список списков строк и список выбранных строк. Однако это кажется немного сложным. –