簡體   English   中英

WPF獲取treeviewitem的內容

[英]WPF get Content of a treeviewitem

我需要檢查用戶每次更改時選擇的treeviewitem 我使用了SelectedItemChanged方法或任何所謂的方法。 它工作正常,但現在我需要為每個可能的treeviewitem做一個switch case 但是我無法做到這一點,因為我不知道如何獲得它的名字。 我在互聯網上檢查了一下,但有人說使用treeview.SelectedItem但它返回System.Windows.Controls.TreeViewItem Header: Items.Count:0 我想知道是否可以完全在.cs代碼文件中執行此操作,或者是否必須使用數據綁定等。

謝謝你的幫助。

編輯:

這是我設置Treeview和TreeViewItems的方式。 它們都像第二個例子。

<TreeView x:Name="treeview" Margin="10,10,0,4" HorizontalAlignment="Left" Width="192" Background="#FFA45353" SelectedItemChanged="treeview_SelectedItemChanged"">
        <TreeViewItem IsExpanded="False">
            <TreeViewItem.Header>
                <StackPanel Orientation="Horizontal">
                    <Image Source="./Resources/smallicons/icon.jpg"/>
                    <TextBlock Text=" Main" FontSize="14"/>
                </StackPanel>
            </TreeViewItem.Header>
            <!--==============================================================================================-->
            <TreeViewItem>
                <TreeViewItem.Header>
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="First" Foreground="Black" />
                    </StackPanel>
                </TreeViewItem.Header>
            </TreeViewItem>
            <!--==============================================================================================-->

您在找這個嗎?

TreeViewItem selectedNode = (TreeViewItem)treeView.SelectedItem;
string strSelectedNode = selectedNode.Header.ToString();

上面的代碼段假設了一些事情

順便說一句,這段代碼是

private void TreeViewItem_Selected(object sender, RoutedEventArgs e)
{
    TreeViewItem selectedNode = (TreeViewItem)treeView.SelectedItem;
    MessageBox.Show(selectedNode.Header.ToString());
}

好的...根據您的treeview和treeview項目設置,您必須編寫如下代碼。

private void treeview_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
    {    
            TreeViewItem selectedNode = (TreeViewItem)treeview.SelectedItem;
            var sp = selectedNode.Header as StackPanel;
            var tb = sp.Children[0] as TextBlock;
            var selecteditem = tb.Text;
            //MessageBox.Show(selecteditem);
            switch (selecteditem)
            {
                case "Main":
                    MessageBox.Show(selecteditem);
                    break;
                case "First":
                    MessageBox.Show(selecteditem);
                    break;
                default:
                    MessageBox.Show("no matching item found");
                    break;
            }
        }

在這里,我正在挖掘選定的樹形視圖項目以獲取選定的樹形視圖項目的文本。 您可能需要稍微調整代碼才能使其完全正常運行。 讓我知道您是否需要任何幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM