【WPF】樹形結構TreeView的用法(MVVM)(轉) 【WPF】樹形結構TreeView的用法(MVVM)

【WPF】樹形結構TreeView的用法(MVVM)

 

TreeView控件的用法仍是有蠻多坑點的,最好記錄一下。html

參考項目:mvvm


靜態的樹形結構

若是樹形結構的全部子節點都已經肯定且不會改動,能夠直接在控制層用C#代碼來生成這個TreeView。post

複製代碼
            var rootItem = new OutlineTreeData
            {
                outlineTypeName = "David Weatherbeam",
                Children=
                {
                    new OutlineTreeData
                    {
                        outlineTypeName="Alberto Weatherbeam",
                        Children=
                        {
                            new OutlineTreeData
                            {
                                outlineTypeName="Zena Hairmonger",
                                Children=
                                {
                                    new OutlineTreeData
                                    {
                                        outlineTypeName="Sarah Applifunk",
                                    }
                                }
                            },new OutlineTreeData
                            {
                                outlineTypeName="Jenny van Machoqueen",
                                Children=
                                {
                                    new OutlineTreeData
                                    {
                                        outlineTypeName="Nick van Machoqueen",
                                    },
                                    new OutlineTreeData
                                    {
                                        outlineTypeName="Matilda Porcupinicus",
                                    },
                                    new OutlineTreeData
                                    {
                                        outlineTypeName="Bronco van Machoqueen",
                                    }
                                }
                            }
                        }
                    },
                    new OutlineTreeData
                    {
                        outlineTypeName="Komrade Winkleford",
                        Children=
                        {
                            new OutlineTreeData
                            {
                                outlineTypeName="Maurice Winkleford",
                                Children=
                                {
                                    new OutlineTreeData
                                    {
                                        outlineTypeName="Divinity W. Llamafoot",
                                    }
                                }
                            },
                            new OutlineTreeData
                            {
                                outlineTypeName="Komrade Winkleford, Jr.",
                                Children=
                                {
                                    new OutlineTreeData
                                    {
                                        outlineTypeName="Saratoga Z. Crankentoe",
                                    },
                                    new OutlineTreeData
                                    {
                                        outlineTypeName="Excaliber Winkleford",
                                    }
                                }
                            }
                        }
                    }
                }
            };    
複製代碼

運行後能看到樹形結構是下面的樣子。url


獲取TreeViewItem控件

前臺頁面xaml:spa

複製代碼
 <!-- 樹形結構 -->
 <TreeView x:Name="treeView" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="10,-10,0,0"
           ItemsSource="{Binding ItemTreeDataList}" BorderThickness="0" Width="215" Height="210">
     <TreeView.ItemContainerStyle>
         <Style TargetType="{x:Type TreeViewItem}">
             <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
             <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
             <Setter Property="FontWeight" Value="Normal" />
             <Style.Triggers>
                 <Trigger Property="IsSelected" Value="True">
                     <Setter Property="FontWeight" Value="Bold" />
                 </Trigger>
             </Style.Triggers>
         </Style>
     </TreeView.ItemContainerStyle>

     <TreeView.ItemTemplate>
         <HierarchicalDataTemplate ItemsSource="{Binding Children}">
             <TextBlock x:Name="treeViewItemTB" Text="{Binding itemName}" Tag="{Binding itemId}"/>
         </HierarchicalDataTemplate>
     </TreeView.ItemTemplate>
 </TreeView>  
複製代碼

嘗試過在初始化時獲取TreeViewItem,發現都是爲Null。code

  • TreeViewItem item= (TreeViewItem)(myWindow.treeView.ItemContainerGenerator.ContainerFromIndex(0)); // 沒法獲取,爲Null!
  • VisualTreeHelper.GetChild(); // 沒法獲取,爲Null!

谷歌一下,看到這篇解答,下面這位跟我遇到的狀況同樣,用以上方法都沒法獲取TreeViewItem。orm

相關文章
相關標籤/搜索