wpf - XAML Canvas 上可放大和缩小的滚动条

标签 wpf vb.net xaml scrollbar zooming

我有一个 Canvas ,它将包含从后面的代码生成的图像,我的 xaml 如下所示

<ScrollViewer HorizontalScrollBarVisibility="Visible"  VerticalScrollBarVisibility="Visible" >
    <WrapPanel >
        <Grid ScrollViewer.HorizontalScrollBarVisibility="Visible" >
            <Grid.RowDefinitions>
                <RowDefinition Height="25" />
                <RowDefinition Height="20" />
                <RowDefinition Height="*" />
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="350"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>

            <Menu x:Name="menu1" Grid.Row="0" BorderBrush="AliceBlue" VerticalAlignment="Top" FontFamily="Comic Sans MS" DockPanel.Dock="Top" RenderTransformOrigin="0.48,3.04" >
                <MenuItem Header="_File" Width="92" FontSize="16" FontWeight="Normal" FontFamily="Century Gothic" >

                    <MenuItem Header="_Print"/>
                    <MenuItem Header="_Print Preview"/>
                    <MenuItem Header="_Exit"/>

                </MenuItem>
            </Menu>

            <ToolBar x:Name="toolBar1" Grid.Row="1" Grid.RowSpan="2" BorderBrush="Red"  BorderThickness="3" Margin="0,0,0,900"   Height="30" VerticalAlignment="Top" DockPanel.Dock="Top" >
                <Button x:Name="Zoomin" Click="menuItemZoomin_Click" HorizontalAlignment="Left" Margin="1" Width="90"  FontSize="16" FontWeight="SemiBold" Height="55" RenderTransformOrigin ="0.917,0.587" IsHitTestVisible="True" IsEnabled="True" FontFamily="Century Gothic" Content="Zoom In" />
                <Button x:Name="Zoomout" Click="menuItemZoomout_Click" HorizontalAlignment="Left" Margin="1" Width="90" FontSize="16" FontWeight="SemiBold" RenderTransformOrigin="0.917,0.587" Height="55" FontFamily="Century Gothic" Content="Zoom Out"/>
                <!--<Button x:Name="Print" Click="PrintBtn_Click" HorizontalAlignment="Left" Margin="1" Width="90" FontSize="16" FontWeight="SemiBold" RenderTransformOrigin="0.917,0.587" Height="55" FontFamily="Century Gothic" Content="Print"/>-->
            </ToolBar>



            <Canvas x:Name="cvsWarehouse"  Grid.Row="1"  Focusable="True" ScrollViewer.CanContentScroll="True"  ScrollViewer.HorizontalScrollBarVisibility="Visible" ScrollViewer.VerticalScrollBarVisibility="Visible"    MouseWheel="Canvas_MouseWheel"  RenderTransformOrigin="0.5,0.5" Margin="15,144,122,151" Grid.ColumnSpan="2"  >
                <Canvas.LayoutTransform>
                    <TransformGroup>
                        <ScaleTransform x:Name ="st1" ScaleX="{Binding Value, ElementName=uiScaleSlider}"
                            ScaleY="{Binding Value, ElementName=uiScaleSlider}"  />
                        <TranslateTransform Y="100" />
                    </TransformGroup>

                </Canvas.LayoutTransform>
            </Canvas>
        </Grid>
    </WrapPanel>

cvsWarehouse 是实际的 Canvas ,其中大量代码在生成图像时进行,输出窗口如下所示。 Scrollbar showing only half

最大化时不显示滚动条。我疯狂地用谷歌搜索并尝试了一切,但仍然无法解决问题。我想滚动直到 Canvas 的末尾。下面还有更多图像,但包装板或布局转换在这里不起作用。这也有放大和缩小功能,但仍然不会显示滚动条。

Maximized but still content is there below but no scrollbars 这就是我说内容仍在下面时的意思

Such a huge canvas

如何使滚动条始终可见。例如放大或缩小或最小化或最大化

最佳答案

我遇到了类似的问题,我发现这个问题的第一个答案很有帮助 -( LayoutTransform on certain elements in canvas? )。将 ScrollViewer 应用到 Canvas (已应用布局变换的元素)。滚动查看器必须检测到 Canvas 大小的变化才能显示滚动条。另外,我认为您不需要在 Canvas 标签中使用这些 - ScrollViewer.CanContentScroll="True"ScrollViewer.Horizo​​ntalScrollBarVisibility="Visible"ScrollViewer.VerticalScrollBarVisibility="Visible"。 ScrollViewer 标签内的这些定义应该呈现所需的功能。

关于wpf - XAML Canvas 上可放大和缩小的滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36264972/

相关文章:

wpf - DrawingVisual 不显示在窗口内的 WPF Canvas 中

c# - 在 Viewmodel 属性中防止 StackOverFlow 或递归

c++ - 如何在 Visual Basic DLL 和 C++ DLL 之间创建隔离/免注册 COM?

c# - 未引发我的图像 slider 代码的 PropertyChanged 事件

WPF如何将混合交互触发器添加到样式资源

wpf - MVVM Light : how to send a parameter to ViewModel (when opening new window)?

c# - 如何在执行时显示带下划线的ContextMenu?

.net - 为什么不识别 HttpUtility 类?

c# - Windows 10 IoT Xaml动态添加图片到flipview

c# - 通用 Windows 应用程序中的 BringToFront/SetZIndex