Я хочу привязать к списку в списке в WPF - PullRequest
1 голос
/ 24 апреля 2019

Я связал свой ItemsSource в моем ItemsControl со списком моделей моделей, называемых LDLTracks.В модели представления LDLTrack есть список координатных объектов, с которыми я хочу связать, однако я не уверен в правильном способе сделать это.

Я могу сделать это, связав свой холст со списком.TrackViewModels, а затем в моем

XAML:

<ItemsControl ItemsSource="{Binding LDLTracks}">
                    <ItemsControl.ItemsPanel>
                        <ItemsPanelTemplate>
                            <Canvas/>
                        </ItemsPanelTemplate>
                    </ItemsControl.ItemsPanel>

                    <ItemsControl.ItemTemplate>
                        <DataTemplate>

                            <Line  X1="{Binding X1}" Y1="{Binding Y1}" X2="{Binding X2}" Y2="{Binding Y2}" Stroke="{Binding LineColor}" StrokeThickness="5">
                                <Line.InputBindings>
                                    <MouseBinding Gesture="LeftClick" Command="{Binding FooCommand}"/>
                                </Line.InputBindings>
                            </Line>
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                </ItemsControl>

Я хочу заменить {Binding X1} списком координат, поэтому в идеале это будет Coordinates.X1, так как координаты будутоднако, когда я пытаюсь это сделать, единственное свойство, к которому вы можете привязать, - это счетчик списка координат.Есть идеи?

1 Ответ

2 голосов
/ 24 апреля 2019

Вы можете использовать внутренний / вложенный ItemsControl, который привязывается к списку Coordinates:

<ItemsControl ItemsSource="{Binding LDLTracks}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <Canvas/>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <ItemsControl ItemsSource="{Binding Coordinates}">
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <Line X1="{Binding X1}" Y1="{Binding Y1}" X2="{Binding X2}" Y2="{Binding Y2}"
                              Stroke="{Binding LineColor}" StrokeThickness="5">
                            <Line.InputBindings>
                                <MouseBinding Gesture="LeftClick" Command="{Binding FooCommand}"/>
                            </Line.InputBindings>
                        </Line>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>
...