1

これが私が持っているコードです:

<ScrollViewer Grid.Row="2" CanContentScroll="True">
      <DockPanel>
           <TreeView x:Name="tView" DockPanel.Dock="Top" VerticalAlignment="Stretch">
               [...]
           </TreeView>

           <TreeView Name="pluginsView" DockPanel.Dock="Top" VerticalAlignment="Stretch">
               [...]
           </TreeView>
      </DockPanel>
</ScrollViewer>

2 つの TreeView を定義する必要があります。同じ「領域」(つまり同じ [行、列]) にあるため、パネルを使用する必要がありました。私は StackPanel を使用しましたが、表示は私が望んでいたものではありませんでした。ScrollViewer を使用して、2 つの TreeView が「領域」のスペースに垂直に収まらない場合に共通のスクロールバーを取得できるようにしました。

私が抱えている問題は水平です。2 つの TreeView の 1 つが「大きすぎる」場合、スクロールバーが表示されますが、大きすぎる TreeView に対してのみ表示されるため、スクロールすると、TreeView の 1 つだけが水平方向に移動します。私が欲しいのは、スクロールすると両方の TreeView が水平に移動することです。

十分に明確かどうかわかりませんが、明確でない場合はスクリーンショットをアップロードできます !

私もこのコードを試しましたが、うまくいきません:

<ScrollViewer Grid.Row="2" CanContentScroll="True">
      <Grid Grid.Row="2">
           <Grid.RowDefinitions>
               <RowDefinition Height="Auto" />
               <RowDefinition Height="Auto" />
           </Grid.RowDefinitions>
           <TreeView Grid.Row="0" x:Name="tView" DockPanel.Dock="Top" VerticalAlignment="Stretch">
               [...]
           </TreeView>

           <TreeView Grid.Row="1" Name="pluginsView" DockPanel.Dock="Top" VerticalAlignment="Stretch">
               [...]
           </TreeView>
      </DockPanel>
</ScrollViewer>

しかし、私はまったく同じ問題を抱えています.. :(

4

3 に答える 3

6

ScrollViewer外側ではなく、TreeViewの内部を使用してコンテンツをスクロールしているようScrollViewerです。

通常、これは、内部のコンテンツのサイズが何らかの方法で制限されているためです。そのため、またはその親パネルのScrollViewerサイズを制限していないことを確認してください。TreeViewこれには、垂直/水平アラインメントがストレッチに設定されていることが含まれます。

これは、両方向にスムーズにスクロールするように機能する例です。水平スクロールバーを表示するためにタグを設定HorizontalScrollBarVisibilityする必要があることに少し驚いた。<ScrollViewer>

<Border BorderBrush="Black" BorderThickness="2" Height="100" Width="100">
    <ScrollViewer CanContentScroll="True"
                  HorizontalScrollBarVisibility="Auto"  
                  VerticalScrollBarVisibility="Auto">
        <DockPanel>
            <Rectangle Height="75" Width="150" Fill="Red" DockPanel.Dock="Top" />
            <Rectangle Height="75" Width="150" Fill="Blue" />
        </DockPanel>
    </ScrollViewer>
</Border>
于 2011-11-29T14:38:35.093 に答える
0

何時間ものテストの後、これが私のために働いたものです:

 <ScrollViewer Grid.Row="2" HorizontalScrollBarVisibility="Auto">
     <DockPanel ScrollViewer.HorizontalScrollBarVisibility="Disabled">
            <TreeView x:Name="tView" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
                [...]
            </TreeView>

            <TreeView Name="pluginsView" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
                [...]
            </TreeView>
      </DockPanel>
  </ScrollViewer>

これを機能させるには、TreeViewsとグリッドの表示を無効にする必要があります。また、ScrollViewerでHorizo​​ntalScrollBarVisibility="Auto"を使用する必要があります。

于 2011-11-30T13:16:30.460 に答える
0

ScrollViewer木の水平を無効にしてみてください。このように、ラッピングScrollViewerを開く必要があります。

XAML:

<ScrollViewer Grid.Row="2" CanContentScroll="True">
      <Grid>
           <Grid.RowDefinitions>
               <RowDefinition Height="*" />
               <RowDefinition Height="*" />
           </Grid.RowDefinitions>
           <TreeView Grid.Row="0" x:Name="tView" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
               [...]
           </TreeView>

           <TreeView Grid.Row="1" Name="pluginsView" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
               [...]
           </TreeView>
      </Grid>
</ScrollViewer>
于 2011-11-29T14:28:10.377 に答える