WPF:ScrollViewer 上的 ScrollBar 未激活
WPF
为什么当我放大时 ScrollViewer 上的 ScrollBar 没有激活?
<Window x:Class="WpfApplication4.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="356" Width="804">
<Grid>
<ScrollViewer
PreviewMouseWheel="ScrollViewer_PreviewMouseWheel"
VerticalScrollBarVisibility="Visible"
HorizontalScrollBarVisibility="Visible">
<Canvas>
<Canvas.LayoutTransform>
<TransformGroup>
<ScaleTransform x:Name="scaleTransform"/>
</TransformGroup>
</Canvas.LayoutTransform>
<TextBlock Canvas.Left="34" Canvas.Top="47" Name="textBlock1" Text="TK QSDFWPO Aàâéèêëîïôùûüÿçæœ; BLA BLA BLA...... " />
<TextBlock Canvas.Left="310" Canvas.Top="46" Name="textBlock4" Text="TK QSDFWPO Aàâéèêëîïôùûüÿçæœ; BLA BLA BLA...... " />
<TextBlock Canvas.Left="188" Canvas.Top="157" Name="textBlock11" Text="TK QSDFWPO Aàâéèêëîïôùûüÿçæœ; BLA BLA BLA...... " />
</Canvas>
</ScrollViewer>
</Grid>
</Window>
CS:
private void ScrollViewer_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
if (e.Delta > 0)
scaleTransform.ScaleY =
scaleTransform.ScaleX += 0.1;
else
scaleTransform.ScaleY =
scaleTransform.ScaleX -= 0.1;
}
为什么放大时滚动条没有激活?
WPF
Why the ScrollBar is not activated on ScrollViewer when I zoom in?
<Window x:Class="WpfApplication4.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="356" Width="804">
<Grid>
<ScrollViewer
PreviewMouseWheel="ScrollViewer_PreviewMouseWheel"
VerticalScrollBarVisibility="Visible"
HorizontalScrollBarVisibility="Visible">
<Canvas>
<Canvas.LayoutTransform>
<TransformGroup>
<ScaleTransform x:Name="scaleTransform"/>
</TransformGroup>
</Canvas.LayoutTransform>
<TextBlock Canvas.Left="34" Canvas.Top="47" Name="textBlock1" Text="TK QSDFWPO Aàâéèêëîïôùûüÿçæœ; BLA BLA BLA...... " />
<TextBlock Canvas.Left="310" Canvas.Top="46" Name="textBlock4" Text="TK QSDFWPO Aàâéèêëîïôùûüÿçæœ; BLA BLA BLA...... " />
<TextBlock Canvas.Left="188" Canvas.Top="157" Name="textBlock11" Text="TK QSDFWPO Aàâéèêëîïôùûüÿçæœ; BLA BLA BLA...... " />
</Canvas>
</ScrollViewer>
</Grid>
</Window>
CS:
private void ScrollViewer_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
if (e.Delta > 0)
scaleTransform.ScaleY =
scaleTransform.ScaleX += 0.1;
else
scaleTransform.ScaleY =
scaleTransform.ScaleX -= 0.1;
}
Why the ScrollBar is not activated when I zoom in?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
画布不会根据其内容调整大小。您应该使用另一个面板。例如网格:
我还认为您需要将事件标记为已处理以防止垂直滚动:
Canvas doesn't resize to its contents. You should use another panel. Grid for example:
also I think you need to mark event as handled to prevent vertical scroll:
您需要为其设置宽度和高度(它在自动模式下不起作用),
即:
尝试了一下,成功了,祝你好运!
you need to set Width and Height for it (it will not work in Auto)
i.e.:
<Canvas Width="250" Height="235">
tried on mind and it worked, good luck!
正如 Marat 所提到的,画布的大小不会随着内容的改变而改变。
但我们可以像这样强制它,将父窗口命名为例如“myWpfApplication4.MainWindow”并且:
As mentioned Marat, the Canvas does not change its size after its content.
But we can force it like this, naming the parent Window as by eg."myWpfApplication4.MainWindow" and: