XAML UWA 滚动条不显示
XAML UWA Scrollbar not showing
在下面的代码中,Scrollbar 控件不显示,但 Slider 控件显示。如果我只是通过将 Scrollbar 更改为 Slider 将 Scrollbar 控件更改为 Slider 控件,它就可以完美地工作,但是对于应用程序,我更喜欢滚动条控件的外观而不是滑块。
我正在使用 Win2D 在动画中手动绘制一个 1000 单元 x 1000 单元的大网格 canvas,但仅显示使用滚动条(滑块)位置滚动到的部分。
在使用 Slider 控件时完美运行。
<Page
x:Class="TrappedEditor.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:TrappedEditor"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:canvas="using:Microsoft.Graphics.Canvas.UI.Xaml"
Unloaded="Page_Unloaded"
mc:Ignorable="d">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" SizeChanged="Grid_SizeChanged">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="50"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="50"/>
</Grid.RowDefinitions>
<ScrollBar x:Name="scrollBarVertical" Visibility="Visible" Grid.Row="0" Grid.Column="1" ValueChanged="scrollBarVertical_ValueChanged" Orientation="Vertical" Minimum="0" Maximum="1000"/>
<Slider x:Name="scrollBarHorizontal" Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="1" Orientation="Horizontal" ValueChanged="scrollBarHorizontal_ValueChanged" Minimum="0" Maximum="1000"/>
<canvas:CanvasAnimatedControl Grid.Row="0" Grid.Column="0" x:Name="canvas" Draw="canvas_Draw" CreateResources="canvas_CreateResources"/>
</Grid>
TLDR;
将需要滚动的所有内容扭曲成 ScrollView
。
解决了这个问题。添加 IndicatorMode="MouseIndicator" 按预期显示 ScrollBar。
例如:
<ScrollBar x:Name="scrollBarVertical" IndicatorMode="MouseIndicator" Visibility="Visible" Grid.Row="0" Grid.Column="1" ValueChanged="scrollBarVertical_ValueChanged" Orientation="Vertical" Minimum="0" Maximum="1000"/>
在下面的代码中,Scrollbar 控件不显示,但 Slider 控件显示。如果我只是通过将 Scrollbar 更改为 Slider 将 Scrollbar 控件更改为 Slider 控件,它就可以完美地工作,但是对于应用程序,我更喜欢滚动条控件的外观而不是滑块。
我正在使用 Win2D 在动画中手动绘制一个 1000 单元 x 1000 单元的大网格 canvas,但仅显示使用滚动条(滑块)位置滚动到的部分。
在使用 Slider 控件时完美运行。
<Page
x:Class="TrappedEditor.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:TrappedEditor"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:canvas="using:Microsoft.Graphics.Canvas.UI.Xaml"
Unloaded="Page_Unloaded"
mc:Ignorable="d">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" SizeChanged="Grid_SizeChanged">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="50"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="50"/>
</Grid.RowDefinitions>
<ScrollBar x:Name="scrollBarVertical" Visibility="Visible" Grid.Row="0" Grid.Column="1" ValueChanged="scrollBarVertical_ValueChanged" Orientation="Vertical" Minimum="0" Maximum="1000"/>
<Slider x:Name="scrollBarHorizontal" Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="1" Orientation="Horizontal" ValueChanged="scrollBarHorizontal_ValueChanged" Minimum="0" Maximum="1000"/>
<canvas:CanvasAnimatedControl Grid.Row="0" Grid.Column="0" x:Name="canvas" Draw="canvas_Draw" CreateResources="canvas_CreateResources"/>
</Grid>
TLDR;
将需要滚动的所有内容扭曲成 ScrollView
。
解决了这个问题。添加 IndicatorMode="MouseIndicator" 按预期显示 ScrollBar。
例如:
<ScrollBar x:Name="scrollBarVertical" IndicatorMode="MouseIndicator" Visibility="Visible" Grid.Row="0" Grid.Column="1" ValueChanged="scrollBarVertical_ValueChanged" Orientation="Vertical" Minimum="0" Maximum="1000"/>