2012-03-06 87 views
2

我試圖在WPF中創建可編輯樹視圖節點。我讀this article。但他把最關鍵的部分作爲「家庭作業」,並以現在缺失的圖片的形式給出暗示。它使他的整個博客文章對我無用。否則,它非常好,我認爲。使用模板和樣式的可編輯樹視圖節點

我有以下樹視圖模板,我遺漏了屬性。

  <HierarchicalDataTemplate> 
       <StackPanel> 
        <Image/> 
        <TextBlock/> 
       </StackPanel> 
      </HierarchicalDataTemplate> 

創建一個新的DataTemplate

  <DataTemplate x:Key="editableName"> 
       <TextBox/> 
      </DataTemplate> 

使用下面的觸發器當選擇樹視圖中的節點更改模板。

<Style TargetType="{x:Type TreeViewItem}">  
<Style.Triggers> 
    <Trigger Property="IsSelected" Value="True"> 
     <Setter Property="SOMEPATH!!!" Value="{StaticResource editableName}" /> 
    </Trigger> 
</Style.Triggers> 
</Style> 

什麼是我需要插入的HierarchicalDataTemplate/StackPanel中/ TextBlock.HeaderTemplate數據模板的路徑?從TreeViewItem中的這個觸發器。

或者我是這樣做的錯誤方式?

非常感謝您的任何幫助

回答

10
 <TreeView x:Name="MyTreeView"> 
      <TreeView.Resources> 
       <DataTemplate x:Key="NormalTemplate"> 
        <StackPanel Orientation="Horizontal"> 
         <TextBlock Text="{Binding ID}" Margin="3"/> 
         <TextBlock Text="-" Margin="3"/> 
         <TextBlock Text="{Binding Name}" Margin="3"/> 
        </StackPanel> 
       </DataTemplate> 
       <DataTemplate x:Key="EditTemplate"> 
        <TextBox Text="{Binding Name}"/> 
       </DataTemplate> 
      </TreeView.Resources> 
      <TreeView.ItemTemplate> 
       <HierarchicalDataTemplate 
          ItemsSource="{Binding Team}"> 
        <ContentPresenter Content="{Binding}"> 
         <ContentPresenter.Style> 
          <Style TargetType="{x:Type ContentPresenter}"> 
           <Setter Property="ContentTemplate" 
             Value="{StaticResource 
               NormalTemplate}"/> 
           <Style.Triggers> 
            <DataTrigger 
             Binding="{Binding IsSelected, 
             RelativeSource={RelativeSource 
               FindAncestor, 
             AncestorType={x:Type TreeViewItem}}}" 
               Value="True"> 
             <Setter Property="ContentTemplate" 
               Value="{StaticResource 
                 EditTemplate}" /> 
            </DataTrigger> 
           </Style.Triggers> 
          </Style> 
         </ContentPresenter.Style> 
        </ContentPresenter> 
       </HierarchicalDataTemplate> 
      </TreeView.ItemTemplate> 
     </TreeView> 
+0

謝謝你,我設法弄清楚了自己以一種稍微不同的方式使用DataTrigger和一個ContentControl。但我想我可能會更喜歡你:) – CodeMonkey 2012-03-06 11:33:12

+0

謝謝你真的幫助 – Mohsen 2012-07-19 06:42:57

0

應該ItemTemplate

這是修改TreeViewItem正文的屬性。要修改標題,請使用HeaderTemplate