2009-01-20 76 views
0

在查爾斯Petzold的在MSDN雜誌的2007年1月版(http://msdn.microsoft.com/en-us/magazine/cc163497.aspx)「使用模板自定義WPF控件」的文章,他說,如何爲WPF中的自定義控件提供兩個默認模板?

的進度控制實際上有兩個方向的兩個默認模板。 (這也適用於ScrollBar和Slider。)如果您希望新的ProgressBar支持兩種方向,則應該編寫兩個單獨的模板,並在您爲ProgressBar定義的Style元素的Triggers部分中選擇它們。

我目前正在編寫一個需要此功能的自定義控件,但無法解決如何操作,正如他所說的 - 無論如何,無論如何,這種方式無論如何都行不通。有人有這樣的例子嗎?

在此先感謝。

回答

2

你可以看到它在滾動條採樣控制模板http://msdn.microsoft.com/en-us/library/ms742173.aspx

我只在這裏複製的樣本的相關部分進行。

總之有在資源字典兩個模板:

<ControlTemplate x:Key="VerticalScrollBar" TargetType="{x:Type ScrollBar}"> ... 

<ControlTemplate x:Key="HorizontalScrollBar" TargetType="{x:Type ScrollBar}"> ... 

而且在風格觸發它們之間進行切換:

<Style x:Key="{x:Type ScrollBar}" TargetType="{x:Type ScrollBar}"> 
    <Style.Triggers> 
    <Trigger Property="Orientation" Value="Horizontal"> 
     <Setter Property="Template" Value="{StaticResource HorizontalScrollBar}" /> 
    </Trigger> 
    <Trigger Property="Orientation" Value="Vertical"> 
     <Setter Property="Template" Value="{StaticResource VerticalScrollBar}" /> 
    </Trigger> 
    </Style.Triggers> 
</Style> 
相關問題