2011-04-08 53 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