2013-06-29 94 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> 
相關問題