我希望绑定到 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>
我已将 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>