2013-06-29 71 views
1

我正在关注如何修改控件模板的教程,但本教程使用一个新的切换按钮覆盖原始切换按钮,该按钮使用一个路径绘制三角形,而不是原始的十字形状扩展器。原始文件是否存在于我可以在某种风格中引用的地方?或者我将不得不使用矩形和路径绘制它?WPF在哪里可以找到treeview的togglebuton的默认样式?

<Style x:Key="ExpandCollapseToggleStyle" TargetType="ToggleButton"> 
    <Setter Property="Template"> 
     <Setter.Value> 
     <ControlTemplate TargetType="ToggleButton"> 
      <Grid 
      Width="15" 
      Height="13" 
      Background="Transparent"> 
      <Path x:Name="ExpandPath" 
      HorizontalAlignment="Left" 
      VerticalAlignment="Center" 
      Margin="1,1,1,1" 
      Fill="{StaticResource GlyphBrush}" 
      Data="M 4 0 L 8 4 L 4 8 Z"/> 
      </Grid> 
      <ControlTemplate.Triggers> 
      <Trigger Property="IsChecked" 
       Value="True"> 
       <Setter Property="Data" 
       TargetName="ExpandPath" 
       Value="M 0 4 L 8 4 L 4 8 Z"/> 
      </Trigger> 
      </ControlTemplate.Triggers> 
     </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
    </Style> 

和其他地方

  <ToggleButton x:Name="Expander" 
        Style="{StaticResource ExpandCollapseToggleStyle}" 
        IsChecked="{Binding Path=IsExpanded, 
           RelativeSource={RelativeSource TemplatedParent}}" 
        ClickMode="Press"/> 

回答

2

你可以找到default styles on MSDN

如果你想引用一种风格,你需要添加对PresentationFramework.Aero(或任何其他主题)的引用并合并资源。但是,它打破了主题“魔术”,因此将样式复制到资源中可能是一个更好的主意。

+0

所以你给我的风格,但如果我将所有的xaml复制到usercontrol资源,它似乎相当庞大。那是标准吗?或者有没有办法链接其他xaml文件。我觉得让另一个文件“treeviewitem.xaml”包含treeviewitem的样式是有意义的。我正在制作一个自定义控件,因此拥有一个自定义样式占据了控件的很多xaml似乎相当庞大。我真正想要做的唯一事情就是让孩子们与父母排队,给控制模式中的项目演示者提供一个-19的余量。 –

+0

@JamesJoshuaStreet这是WPF常见的问题:或者控件的设计者在模板中配置了某些东西,或者你必须复制大量的代码。不过,从WinForms向前迈进了一步,根本没有模板。如果您想避免不惜一切代价复制粘贴,请参阅[“wpf force theme”](https://www.google.com/search?q=wpf+force+theme)(有多种解决方案,但没有一个他们是完美的)。 – Athari

0

你可以像这样使用Expander控件。

<Grid> 
    <Expander Name="PART_Expander" IsExpanded="{TemplateBinding TreeViewItem.IsExpanded}"> 
     <Expander.Header> 
      <ContentPresenter ContentSource="Header" /> 
     </Expander.Header> 
      <ItemsPresenter /> 
    </Expander> 
    <ContentPresenter Name="PART_ContentPresenter" ContentSource="Header" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="Collapsed" /> 
</Grid> 
相关问题