2016-04-19 8 views
11

I Zuschauer haben blätterte in treeview und listbox aktiviert und angepasst hat auch die Bildlaufleisten beziehen this Website und i acheived habe, was ich .My Bildlaufleiste muß nun aussehen wie untenScroll Betrachter Resize (rechts unten) in wpf

enter image description here

aber ich brauche meine Scrollbar wie diese

enter image description here

ich diesen Raum müssen in der rechten unteren Ecke mit ho gefüllt werden aussehen werden rizontal oder vertikale scroll bar. Ist es möglich in wpf ??

Unten ist die maßgeschneiderte Stil für die Scrollbar

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

und hier gibt es treeview Code

<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

Wie über Ihren aktuellen Code bereitstellt? – Evk

Antwort

4

Unten finden Sie eine Möglichkeit, es zu tun ist:

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> 

Converter:

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

Es funktioniert nicht – Arshad

+0

@dahsra verwenden Sie einen anderen Stil für Ihren Scrollviewer? Wenn ja, bitte geben Sie den Code oder verschieben Sie den Auslöser in meinem Stil in diesen Stil. –

+0

tatsächlich benutze nicht separate Scroll-Viewer. Ich bin nur mit treeview Standard-Bildlaufleiste und für diese Bildlaufleiste habe ich anderen Stil definiert – Arshad