2016-04-29 4 views
1

Ich habe VerticalScrollBar in meinem ListBox. Ich möchte einen Trigger erstellen, der die Breite des VerticalScrollBar vergrößert, wenn er und der Bereich (1-2 Pixel) um ihn herum Fokus erhält.ScrollBar Breite erhöhen, wenn IsFocused == true

habe ich versucht, es so zu tun, aber es funktioniert nicht richtig:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Style TargetType="{x:Type ScrollBar}" > 
     <Style.Resources> 
      <Style x:Key="ScrollBarThumbStyle" TargetType="{x:Type Thumb}"> 
       <Setter Property="IsTabStop" Value="False"/> 
       <Setter Property="Focusable" Value="True"/> 

        <Setter.Value> 
         <ControlTemplate TargetType="{x:Type Thumb}"> 
          <Rectangle Fill="#36B448" /> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 
     <ControlTemplate x:Key="VerticalScrollBar" TargetType="{x:Type ScrollBar}">    
       <Grid Background="#FFB1B1B1" Width="5" > 

        <Track Name="PART_Track" IsDirectionReversed="True"> 
         <Track.Thumb> 
          <Thumb Style="{StaticResource ScrollBarThumbStyle}" /> 
         </Track.Thumb> 
        </Track> 
       </Grid> 
      </ControlTemplate> 
    <Style.Triggers> 
       <Trigger Property="Orientation" Value="Horizontal"> 
        <Setter Property="Template" Value="{StaticResource HorizontalScrollBar}"/> 
       </Trigger> 
       <Trigger Property="IsMouseOver" Value="True"> 
        <Setter Property="Width" Value="22" /> 
       </Trigger> 

       <!--<Trigger Property="Control.IsFocused" Value="True"> 
        <Setter Property="Width" Value="15"></Setter> 
       </Trigger>--> 
    </Style.Triggers> 

Wie kann ich es tun?

Ich denke, dass EventTriggers können es einfacher machen ...

+1

Setzen Sie es in Gotfocus und Lostfocus? – BugFinder

+0

geben Sie uns bitte das komplette Xaml –

Antwort

0

Sie Ihre eigenen Scrollbar wie folgt erstellen

/// <summary> 
    /// My custom ScrollBar 
    /// </summary> 
    public class MyScrollBar:ScrollBar 
    { 

     /// <summary> 
     /// Subscribe to the events you need 
     /// </summary> 
     public MyScrollBar() 
     { 
      MouseEnter += MyScrollBar_MouseEnter; 
      MouseLeave += MyScrollBar_MouseLeave; 
     } 

     private void MyScrollBar_MouseEnter(object sender, MouseEventArgs e) 
     { 
      //Change the width here 
      Width = 25.0; 
     } 

     private void MyScrollBar_MouseLeave(object sender, MouseEventArgs e) 
     { 
      //Change the width back to default value 
      Width = .... 
     } 

nicht wissen, welche Ereignisse passen für Sie die Breite nur zu ändern versuchen . dann in Ihrem XAML verwenden Sie MyScrollBar anstelle von ScrollBar. Ich hoffe es hilft.

Verwandte Themen