我希望绑定到 WPF 列表中的列表

I wish to bind to a list within a list in WPF

我已将 ItemsControl 中的 ItemsSource 绑定到名为 LDLTracks 的 ViewModel 列表。在 LDLTrack 视图模型中有一个我希望绑定的坐标对象列表,但是我不确定正确的方法。

我可以通过将我的 canvas 绑定到 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,因为坐标将是一个列表,但是当我尝试时,唯一的 属性 你可以绑定到的是坐标列表计数。有什么想法吗?

您可以使用绑定到 Coordinates 列表的 inner/nested ItemsControl

<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>