2011-04-08 51 views
1

WPF
为什么当我放大时,ScrollBar未在ScrollViewer上激活?WPF:ScrollBar未在ScrollViewer上激活

<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; 
} 

为什么当我放大了滚动条没有被激活?

回答

1

画布不会调整其内容。你应该使用另一个面板。电网例如:

<ScrollViewer 
    PreviewMouseWheel="ScrollViewer_PreviewMouseWheel" 
    VerticalScrollBarVisibility="Visible" 
    HorizontalScrollBarVisibility="Visible"> 
    <Grid> 
     <Grid.LayoutTransform> 
      <TransformGroup> 
       <ScaleTransform x:Name="scaleTransform"/> 
      </TransformGroup> 
     </Grid.LayoutTransform> 
     <TextBlock Margin="34,47" Name="textBlock1" Text="TK QSDFWPO Aàâéèêëîïôùûüÿçæœ; BLA BLA BLA...... " /> 
     <TextBlock Margin="310,46" Name="textBlock4" Text="TK QSDFWPO Aàâéèêëîïôùûüÿçæœ; BLA BLA BLA...... " /> 
     <TextBlock Margin="188,157" Name="textBlock11" Text="TK QSDFWPO Aàâéèêëîïôùûüÿçæœ; BLA BLA BLA...... " /> 
    </Grid> 
</ScrollViewer> 

也是我认为你需要标记事件为已处理,以防止垂直滚动:

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; 

    e.Handled = true; 
} 
+0

但我需要画布。 – serhio 2011-04-08 12:35:38

0

如前所述萨芬,画布不其内容后,改变其大小。 。 但是我们可以迫使它这样,命名父窗口,通过如“myWpfApplication4.MainWindow”和:

<Canvas 
    Height="{Binding ElementName=myWpfApplication4.MainWindow, Path=ActualHeight}" 
    Width="{Binding ElementName=myWpfApplication4.MainWindow, Path=ActualWidth}"> 
1

您需要设置宽度和高度(它不会自动运行)

ie: <Canvas Width="250" Height="235">

试过在心里,它的工作,祝你好运!

+0

是的,我自己的回应是否这是在同一方向思考...谢谢 – serhio 2011-04-08 13:44:45