2016-04-29 14 views
1

VerticalScrollBarListBoxにあります。彼とその周りの領域(1-2ピクセル)がフォーカスを取得するとき、VerticalScrollBarの幅を増やすトリガーを作成したいと思います。IsFocused == trueのときにスクロールバーの幅を増やす

私はこのようにそれを行うみましたが、それは正しく動作しません。

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

は、私はそれをどのように行うことができますか?

私は EventTriggersは、それが簡単に作ることができると思います

...

+1

これをgotfocusとlostfocusに設定しますか? – BugFinder

+0

私たちに完全なxamlを与えてください –

答えて

0

あなたはこの

/// <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 = .... 
     } 

のような独自のカスタムスクロールバーを作成することができますあなただけ試すの幅を変更するには向いているイベントか分かりません。 xamlでScrollBarの代わりにMyScrollBarを使用します。それが役に立てば幸い。

関連する問題