WPF树视图事件

时间:2012-05-17 09:05:54

标签: c# wpf

我想在WPF中创建一个与windows应用程序相同的应用程序。当我在wpf中使用treeview事件时,我没有发现类似于WIndows Application的treeview_NodeMouseClick的任何事件。

// Windows应用程序代码

    private void tv_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
    {
        if (e.Node != null)
        {
            GetAllchield(e.Node, e.Node.Level);

        }

    }

// GetAllchield

    public void GetAllchield(TreeNode clickednode, int indexDepth)
    {
        if (clickednode.Nodes.Count > 0 && !clickednode.IsExpanded)
        {
            clickednode.Collapse();
            return;
        }
        string[] FullPath = clickednode.FullPath.Split('\\');
        string rootnode = FullPath[0].ToString();
        //get all market for root event type
        int eventTypeID = DictionaryAllActiveEventTypes[rootnode];
        string[] allMarkets = GetAllMarketForEventID(eventTypeID);

        //selecting unque chield node and populating in tree

        for (int i = 0; i < allMarkets.Length; i++)
        {

            if (allMarkets[i].Contains(clickednode.Text))
            {

                string[] marketDetails = allMarkets[i].Split('~');
                int marketID = Convert.ToInt32(marketDetails[0]);
                string MarketName = marketDetails[1].ToString();
                string MarketStatus = marketDetails[3].ToString();
                string EventHeirarchy = marketDetails[6].ToString();


                string Menupath = marketDetails[5].ToString();
                string[] Arrmenupath = Menupath.Trim(':').Split('\\');

                string chieldText = "";



                if (indexDepth == 0)
                {
                    if (rootnode == "Cricket" || rootnode == "Tennis" || rootnode == "Golf" || rootnode == "Rugby")
                    {
                        if (Arrmenupath[2].Contains("Group") && Arrmenupath[2].Length == 7)
                        {
                            if ((indexDepth + 3) <= Arrmenupath.Length - 1)
                            {
                                chieldText = Arrmenupath[indexDepth + 3].ToString();
                            }
                        }
                        else
                        {
                            if ((indexDepth + 2) <= Arrmenupath.Length - 1)
                                chieldText = Arrmenupath[indexDepth + 2].ToString();
                        }
                    }
                    else
                        if ((indexDepth + 2) <= Arrmenupath.Length - 1)
                            chieldText = Arrmenupath[indexDepth + 2].ToString();
                }
                else
                {
                    if (Arrmenupath[Arrmenupath.Length - 1] == clickednode.Text)
                        chieldText = MarketName;
                    else
                    {

                        if (allMarkets[i].Contains(clickednode.Text) && allMarkets[i].Contains(clickednode.Parent.Text) && allMarkets[i].Contains(rootnode))
                        {
                            if (rootnode == "Cricket" || rootnode == "Tennis" || rootnode == "Golf" || rootnode == "Rugby")
                            {
                                if (Arrmenupath[2].Contains("Group") && Arrmenupath[2].Length == 7)
                                {
                                    if ((indexDepth + 3) <= Arrmenupath.Length - 1)
                                    {
                                        chieldText = Arrmenupath[indexDepth + 3].ToString();
                                    }
                                }
                                else
                                {
                                    if ((indexDepth + 2) <= Arrmenupath.Length - 1)
                                        chieldText = Arrmenupath[indexDepth + 2].ToString();
                                }
                            }
                            else
                                if ((indexDepth + 2) <= Arrmenupath.Length - 1)
                                    chieldText = Arrmenupath[indexDepth + 2].ToString();
                        }
                    }
                }


                //check whether node is already added

                //if (chieldText.Contains("MiWay"))
                //{ }


                if (!string.IsNullOrEmpty(chieldText))
                {
                    if (clickednode.Nodes.Count >= 1)
                    {
                        bool doesNodeAlreadyExist = false;
                        foreach (TreeNode node in clickednode.Nodes)
                        {
                            if (node.Text == chieldText)
                            {
                                doesNodeAlreadyExist = true;
                                break;
                            }
                        }
                        if (!doesNodeAlreadyExist)
                        {
                            clickednode.Nodes.Add(chieldText);
                        }
                    }
                    else
                    {
                        clickednode.Nodes.Add(chieldText);
                    }
                }


            }
        }
        clickednode.Expand();
    }

我想在WPF中使用相同的内容。请帮助我或如果你得到它。

1 个答案:

答案 0 :(得分:0)

您可以使用MouseLeftButtonDown并检查sender参数或使用SelectedItemChanged