我有一个带有 Canvas 的 ItemsPanelTemplate 的 ListBox。我知道除非给定高度和宽度,否则 ScrollViewer 将无法与 Canvas 一起使用。我不想给画布一个高度和宽度,因为它并不总是恒定的。是否有任何其他解决方法或技巧有人已经为这种情况工作。我知道我不能是唯一遇到这个问题的人。提前谢谢这里是我到目前为止的代码。
另一个问题是我无法将 ScrollViewer 放在 ItemsPanelTemplate 中,因为它只能嵌套一个元素。
这也限制了我将画布放在网格内以获得定位。
XAML:
<!--Core Viewer-->
<ScrollViewer x:Name="scrollViewer"
VerticalScrollBarVisibility="Hidden"
HorizontalScrollBarVisibility="Hidden">
<ListBox x:Name="objCoreViewer"
ItemsSource="{Binding ItemsSource}"
Background="LightGray"
SelectionChanged="objCoreViewer_SelectionChanged"
ItemTemplateSelector="{DynamicResource CoreViewerDataTemplateSelector}"
ItemContainerStyleSelector="{DynamicResource ItemContainerStyleSelector}"
PreviewMouseWheel="objCoreViewer_PreviewMouseWheel">
<!-- Core Map Canvas -->
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<Canvas x:Name="objCoreViewerCanvas"
Background="Transparent">
<Canvas.LayoutTransform>
<ScaleTransform ScaleX="{Binding Path=Value, ElementName=ZoomSlider}"
ScaleY="{Binding Path=Value, ElementName=ZoomSlider}" />
</Canvas.LayoutTransform>
</Canvas>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
</ScrollViewer>