WPF中TreeView添加子節點C#代碼控制

在WPF中treeview一般用於顯示文件夾目錄。

如果只用xaml實現,那麼就無法做到動態的改變,所以需要使用到C#代碼控制。

而之前準備做一個類似vs的打開.sln就會加載項目目錄這種結構的應用。遇到了一些問題。因爲買來的教材上面並沒有講到TreeView,而百度到的很多都是SilverLight的版本,根本沒辦法參照。在一番搜索之後終於知道了用代碼向TreeView中添加子節點。

在WPF中向TreeView添加節點的代碼爲:

            TreeViewItem mtrNode = new TreeViewItem();
            mtrNode.Header = "材料庫"; 
            FileTree.Items.Add(mtrNode); 
我寫的應用如下:

  • 首先自定義一個TreeView樣式

        <TreeView Name="FileTree">
            <TreeView.Resources>
                <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" />
                <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black" />

                <Style TargetType="TreeViewItem">
                    <Setter Property="HeaderTemplate">
                        <Setter.Value>
                            <DataTemplate>
                                <Border Name="border" BorderThickness="2" BorderBrush="Transparent" Padding="2" CornerRadius="5">
                                    <TextBlock Text="{Binding}" Name="textBlock"/>
                                </Border>
                                <DataTemplate.Triggers>
                                    <DataTrigger Binding="{Binding IsSelected,RelativeSource={RelativeSource TemplatedParent}}" Value="True">
                                        <Setter TargetName="border" Property="BorderBrush" Value="Navy"/>
                                        <Setter TargetName="textBlock" Property="Foreground" Value="Red"/>
                                    </DataTrigger>
                                </DataTemplate.Triggers>
                            </DataTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </TreeView.Resources>

            <TreeViewItem Header="Visual Studio" IsExpanded="True">
                <TreeViewItem Header="Visual Studio 2012"/>
                <TreeViewItem Header="Visual Studio 2010"/>
            </TreeViewItem>
            <TreeViewItem Header="SharpDevelop"/>
        </TreeView>

  • 在新建Page的時候傳入參數,重寫構造函數,此處的FileDir爲文件夾目錄
    public EditPage(string FileDir)
            {
                InitializeComponent();
                FileTree.Items.Clear();
                /*添加material文件夾目錄*/
                var mtrFiles = Directory.GetFiles(FileDir + "/material", ".rfa");
                TreeViewItem mtrNode = new TreeViewItem();
                mtrNode.Header = "材料庫"; 
    
                foreach(string fileName in mtrFiles)
                {
                    TreeViewItem item = new TreeViewItem();
                    item.Header = fileName.Substring((FileDir).Length + 10);
                    mtrNode.Items.Add(item);
                }
                FileTree.Items.Add(mtrNode); 
    
                /*添加rfa文件夾目錄*/
                var rfaFiles = Directory.GetFiles(FileDir+"/rfa", "*.rfa");
                TreeViewItem rfaNode = new TreeViewItem();
                rfaNode.Header = "族庫";
    
                foreach (string fileName in rfaFiles)
                {
                    TreeViewItem item = new TreeViewItem();
                    item.Header = fileName.Substring((FileDir).Length +5);
                    rfaNode.Items.Add(item);
                }
                FileTree.Items.Add(rfaNode);
            }
  • 運行效果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章