2014-10-17 37 views
3

我發現奇怪的是沒有像「DragBackground」之類的GridSplitter屬性。如何更改在XAML中聚焦/拖動(帶邊框)時GridSplitter的背景?

這似乎工作,雖然:

<UserControl.Resources> 
    <Style x:Key="CustomGridSplitterStyle" TargetType="GridSplitter"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="GridSplitter"> 
        <Grid x:Name="Root" > 
         <!-- Background --> 
         <Rectangle Fill="White" StrokeThickness="0" /> 
         <!-- Focus Visual --> 
         <Rectangle x:Name="FocusVisual" Stroke="White" StrokeThickness="1" Opacity="0" IsHitTestVisible="false" /> 
        </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</UserControl.Resources> 

GridSplitter Style="{StaticResource CustomGridSplitterStyle}" Grid.Column="1" Width="6" HorizontalAlignment="Stretch" 
        BorderThickness="2,0,0,0" BorderBrush="Blue" /> 

但是我的這種解決方案的問題是,我想設置一個邊界上GridSplitter的左側(見上),這在使用自定義GridSplitter樣式時不起作用。
有沒有人知道如何得到這個工作?

+0

所以,你想要做什麼的例子嗎?拖動時將FocusVisual.Opacity設置爲1? – dkozl 2014-10-17 09:29:37

+0

@dkozl我想有一個GridSplitter,** a)**在拖動或聚焦時有一個指定的顏色(在我的情況下是白色)[已經解決了這部分] ** b)**有一個邊界在左側[這不適用於我的解決方案,也沒有將不透明度設置爲1] – mYnDstrEAm 2014-10-17 10:00:06

+1

我沒有看到任何有關拖動或對焦的內容。所以你只是想把'BorderThickness'和'BorderBrush'放入你的'Template'中? – dkozl 2014-10-17 10:02:16

回答

4

如果你想使用BorderBrushBorderThicknessTemplate你可以在一些Border使用TemplateBinding。您也可以在Style中使用Setter來定義一些默認值。

<Style x:Key="CustomGridSplitterStyle" TargetType="{x:Type GridSplitter}"> 
    <Setter Property="Background" Value="White"/> 
    <Setter Property="BorderBrush" Value="White"/> 
    <Setter Property="BorderThickness" Value="0"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="GridSplitter"> 
       <Border 
        x:Name="FocusVisual" 
        Background="{TemplateBinding Background}" 
        BorderBrush="{TemplateBinding BorderBrush}" 
        BorderThickness="{TemplateBinding BorderThickness}"/> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsDragging" Value="True"> 
         <Setter TargetName="FocusVisual" Property="..." Value="..." /> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

此外,由於GridSplitterThumb,因此具有IsDragging屬性,以便您可以創建Trigger做一些事情,當它是真的在上面

+1

完美!謝謝。 – mYnDstrEAm 2014-10-17 10:25:44

+0

沒問題@mYnDstrEAm。很高興幫助 – dkozl 2014-10-17 10:26:29