首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > CAD教程 >

TreeViewItem的单击,该怎么解决

2013-04-26 
TreeViewItem的单击TreeView下面有几十TreeViewItem需要响应MouseLeftButtonUp事件,只能给每个TreeViewIte

TreeViewItem的单击
TreeView下面有几十TreeViewItem

需要响应MouseLeftButtonUp事件,只能给每个TreeViewItem写上MouseLeftButtonUp="TreeViewItem_MouseLeftButtonUp"
这样的???


有没有简便一些的?


[解决办法]
增加灵活性的同时也就增加了复杂性,c++比c#灵活吧,但用起来也比c#复杂吧。

如果每个treeviewitem的事件处理过程都一样的话,那你就可以遍历一下树,然后让这些个items订阅同一个事件了。

有什么更好的方法的话,记得跟大家分享一下。
[解决办法]
第一, 你的TreeViewItem是写死的嘛? 动态加载TreeViewItem只需要指定一次MouseLeftButtonDown事件

第二, TreeViewItem的单机应该是SelectedItem事件
[解决办法]

引用:
第一, 你的TreeViewItem是写死的嘛? 动态加载TreeViewItem只需要指定一次MouseLeftButtonDown事件

第二, TreeViewItem的单机应该是SelectedItem事件


对,按你的需求,可以用SelectedItemChanged事件来实现的,可能楼主有什么特殊要求?
[解决办法]
for(int i=0;i<10;i++)
{
   TreeViewItem item=new TreeViewItem();
   TreeViewItem.SelectedItem += new SelectedItem事件;
   TreeView.Items.Add(item);
}

void SelectedItem事件(XX,XX)
{
    ......
}


写个伪代码 楼主看懂没?
[解决办法]
引用:
for(int i=0;i<10;i++)
{
  TreeViewItem item=new TreeViewItem();
  TreeViewItem.SelectedItem += new SelectedItem事件;
  TreeView.Items.Add(item);
}

void SelectedItem事件(XX,XX)
{
  ......
}


……


你这个只有节点一级。。给你看看我的...
   private void AddNods(int Id, TreeViewItem treeViewItem)
        {
            List<TypeContracts.Type> childList = new List<TypeContracts.Type>();
            foreach(TypeContracts.Type type in allList)
            {
                if (type.ParentId == Id)
                {
                    childList.Add(type);
                }
            }
            if (childList.Count > 0)
            {
                var _dataTemplate = this.LayoutRoot.Resources["TreeViewItemStyle"] as Style;
                foreach (TypeContracts.Type type in childList)
                {
                    TreeViewItem childTvi = new TreeViewItem() { Header = type, ItemContainerStyle = _dataTemplate };


                    if (treeViewItem != null)   //添加子节点
                    {
                        treeViewItem.Items.Add(childTvi);
                    }
                    else                        //添加父节点
                    {
                        tv.Items.Add(childTvi);
                    }
                    AddNods(type.Id, childTvi);  //添加子节点
                }
            }
        }

不管你多少级节点, 全部读出来,一个递归调用

热点排行