2009-06-25 29 views
2

我想restyle只是WPF控件的一部分。Restyling只是wpf控件的一部分。可能嗎?

(具體來說,我想打一個更大的滾動條的滾動按鈕)

現在我能做到這一點沒有問題。我提取了默認樣式。做了必要的調整,並在我的應用程序中包含修改後的樣式。

問題是,我必須在替換樣式中包含整個控件模板,當我改變的是2個值。

<Setter Property="Control.Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="ScrollBar"> 
     <Grid Background="{TemplateBinding Panel.Background}" SnapsToDevicePixels="True"> 
      <Grid.ColumnDefinitions> 
      <ColumnDefinition MaxWidth="{DynamicResource {x:Static SystemParameters.HorizontalScrollBarButtonWidthKey}}" /> 
      <ColumnDefinition Width="1E-05*" /> 
      <ColumnDefinition MaxWidth="{DynamicResource {x:Static SystemParameters.HorizontalScrollBarButtonWidthKey}}" /> 
      </... etc 

我只是想在列定義改變MaxWidth至50

所以我的問題是:有沒有什麼辦法可以讓這個調整的模板,而不必包括一切?我仍然希望控件模板的所有其他部分能夠像默認一樣工作。

回答

4

在這種情況下,你應該能,因爲模板伸手從資源抓起值:

<ScrollBar xmlns:sys="clr-namespace:System;assembly=mscorlib"> 
    <ScrollBar.Resources> 
     <sys:Double x:Key="{x:Static SystemParameters.HorizontalScrollBarButtonWidthKey}">50</sys:Double> 
    </ScrollBar.Resources> 
</ScrollBar> 

如果模板已經硬編碼的價值,你會倒黴。

+0

太棒了。好的肯特。 – 2009-06-25 10:07:56

相關問題