Показать список в выпадающем списке из списка списков - PullRequest
0 голосов
/ 18 сентября 2018

У меня сейчас есть List<List<Path>>, где я бы хотел показать внутренний список в выпадающих списках. Примерно так псевдо:

<ComboBox>
    <ComboBoxItem Content="3 paths"/>
    <ComboBoxItem Content="3 paths"/>
    <ComboBoxItem Content="3 paths"/>
    <ComboBoxItem Content="3 paths"/>
</Combobox>

РЕДАКТИРОВАТЬ: добавленные изображения

Вот как это выглядит сейчас

Current combobox

И это примерно так, как я хочу

enter image description here

На изображениях каждая строка представляет собой список, содержащий другой список с треугольниками в нем.

Так что, если у самого внешнего списка есть 4 элемента списка, каждый с 3 путями, я хочу, чтобы они отображались, как указано выше. Моя установка сейчас такая:

Xaml:

<ComboBox ItemsSource="{Binding Path=AvailableCombinationsOfShape}">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <Path Data="{Binding Path=Data}" StrokeThickness="1" Stroke="Black"/>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

Код:

AvailableCombinationsOfShape = new List<List<Path>>();

foreach (var combination in combinations)
{
    var r = CombineShapes(GetImageShapes(), combination);
    AvailableCombinationsOfShape.Add(r);
    i++;
}      
private List<Path> CombineShapes(List<SymbolShapeModel> shapes, int[] numbersNotToFill)
{
    var pathList = new List<Path>();
    foreach (var shape in shapes)
    {
        var p = new Path();
        p.Data = shape.Shape;
        pathList.Add(p);
    }
    return pathList;
}

При этом я получаю первую фигуру в каждом списке, которая будет отображаться в комбинированном списке, но мне бы хотелось, чтобы отображались все 3 фигуры.

Моя причина такого желания состоит в том, что я хочу раскрасить некоторые фигуры в каждом из элементов комбинированного списка. (представьте себе 3 квадрата. Я хочу, чтобы первый элемент был цветным квадратом 1 и 2, элемент 2 должен быть цветным квадратом 2 и 3, а последний элемент должен быть цветным квадратом 1 и 3).

Надеюсь, кто-нибудь может мне помочь! Спасибо!

1 Ответ

0 голосов
/ 18 сентября 2018

Спасибо @RobinBennett.Все, что мне было нужно, это Itemscontrol

<ComboBox ItemsSource="{Binding Path=AvailableCombinationsOfShape, Mode=OneWay}">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <ItemsControl ItemsSource="{Binding}">
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <Path Data="{Binding Path=Data}" StrokeThickness="1" Stroke="Black"/>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

Расположение треугольников немного странно, но это проблема, с которой я могу справиться самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...