2016-04-19 32 views
11

Tôi đã bật chế độ xem cuộn trong treeview và hộp danh sách và thậm chí đã tùy chỉnh thanh cuộn tham chiếu this trang web và tôi đã đạt được những gì tôi cần. Thanh cuộn của tôi bây giờ trông giống như bên dướiCuộn chế độ xem của người xem ở góc dưới cùng bên phải trong wpf

enter image description here

nhưng tôi cần thanh cuộn của tôi để được giống như thế này

enter image description here

tôi cần không gian ở góc dưới bên phải để được làm đầy với ho thanh cuộn rizontal hoặc dọc. Có thể trong wpf ??

Dưới đây là phong cách tùy biến cho các thanh cuộn

<local:ThicknessConverter x:Key="ThicknessConverter" /> 
    <Style x:Key="{x:Type ScrollBar}" TargetType="{x:Type ScrollBar}"> 
     <Setter Property="SnapsToDevicePixels" Value="True"/> 
     <Setter Property="OverridesDefaultStyle" Value="true"/> 
     <Style.Triggers> 
      <Trigger Property="Orientation" Value="Horizontal"> 
       <Setter Property="Width" Value="Auto"/> 
       <Setter Property="Height" Value="18" /> 
       <Setter Property="Template" 

        Value="{StaticResource HorizontalScrollBar}" /> 
      </Trigger> 
      <Trigger Property="Orientation" Value="Vertical"> 
       <Setter Property="Width" Value="18"/> 
       <Setter Property="Height" Value="Auto" /> 
       <Setter Property="Template" 

        Value="{StaticResource VerticalScrollBar}" /> 
      </Trigger> 
      <Trigger Property="Name" Value="PART_VerticalScrollBar"> 
       <Setter Property="Margin" Value="{Binding RelativeSource={RelativeSource AncestorType=ScrollViewer},Converter={StaticResource ThicknessConverter}}"> 
       </Setter> 
      </Trigger> 

     </Style.Triggers> 


    </Style> 

và đây là có treeview đang

<telerik:RadTreeView x:Name="radTreeView" Background="#4E4E4E" Margin="0,0,456,0" Grid.Row="2" 
       ItemsSource="{x:Static local:MainWindow.AnimalCategories}" ItemPrepared="treeView_ItemPrepared" 
          ScrollViewer.HorizontalScrollBarVisibility="Visible" ScrollViewer.VerticalScrollBarVisibility="Visible" Grid.RowSpan="2" Grid.ColumnSpan="2"> 
      <telerik:RadTreeView.ItemTemplate> 
       <HierarchicalDataTemplate ItemsSource="{Binding Animals}"> 
        <TextBlock Text="{Binding Category}" /> 
        <HierarchicalDataTemplate.ItemTemplate> 
         <DataTemplate> 

          <TextBlock Text="{Binding Name}"/> 

         </DataTemplate> 
        </HierarchicalDataTemplate.ItemTemplate> 
       </HierarchicalDataTemplate> 
      </telerik:RadTreeView.ItemTemplate> 

     </telerik:RadTreeView> 
+0

Làm thế nào về việc cung cấp mã hiện tại của bạn? – Evk

Trả lời

4

Dưới đây là một cách để làm điều đó:

XAML:

<ScrollViewer Height="400" Width="400" VerticalScrollBarVisibility="Visible" HorizontalScrollBarVisibility="Visible" > 
    <ScrollViewer.Resources> 
     <local:ThicknessConverter x:Key="ThicknessConverter" /> 
     <Style TargetType="ScrollBar"> 
      <Style.Triggers> 
       <Trigger Property="Orientation" Value="Horizontal"> 
        <Setter Property="Margin" Value="{Binding RelativeSource={RelativeSource AncestorType=ScrollViewer},Converter={StaticResource ThicknessConverter}}"> 
        </Setter> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </ScrollViewer.Resources> 
</ScrollViewer> 

Chuyển đổi:

public class ThicknessConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     var scrollBars = FindVisualChildren<ScrollBar>(value as DependencyObject); 
     foreach (var scrollBar in scrollBars) 
     { 
      if (scrollBar.Orientation == Orientation.Horizontal) 
      { 
       return new Thickness(0, 0, 0, 0 - scrollBar.ActualHeight); 
      } 
     } 
     return new Thickness(0, 0, 0, 0); 
    } 

    public static IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj) where T : DependencyObject 
    { 
     if (depObj != null) 
     { 
      for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++) 
      { 
       DependencyObject child = VisualTreeHelper.GetChild(depObj, i); 
       if (child != null && child is T) 
       { 
        yield return (T)child; 
       } 

       foreach (T childOfChild in FindVisualChildren<T>(child)) 
       { 
        yield return childOfChild; 
       } 
      } 
     } 
    }   

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

OUTPUT:

Scroll

+0

Nó không hoạt động – Arshad

+0

@dahsra bạn đang sử dụng một số phong cách khác cho scrollviewer của bạn? Nếu có, vui lòng cung cấp mã hoặc di chuyển trình kích hoạt theo phong cách của tôi. –

+0

thực sự không sử dụng trình xem cuộn riêng biệt. Tôi chỉ đang sử dụng thanh cuộn mặc định của treeview và thanh cuộn đó có phong cách khác được định nghĩa – Arshad

Các vấn đề liên quan