在Charles Petzold的2007年1月版MSDN杂志(http://msdn.microsoft.com/en-us/magazine/cc163497.aspx)中的“使用模板自定义WPF控件”一文中,他说,
ProgressBar控件实际上有两个默认模板用于两个方向。 (对于ScrollBar和Slider也是如此。)如果您希望新的ProgressBar支持两种方向,则应编写两个单独的模板,并在Style元素的Triggers部分中选择它们,您也为ProgressBar定义。< / p>
我目前正在编写一个需要此功能的自定义控件,但无法解决如何按照他的说法进行操作 - 无论如何都无论如何都行不通。有没有人有这样的样本?
提前致谢。
答案 0 :(得分: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>