TreeViewItem的单击
TreeView下面有几十TreeViewItem
需要响应MouseLeftButtonUp事件,只能给每个TreeViewItem写上MouseLeftButtonUp="TreeViewItem_MouseLeftButtonUp"
这样的???
有没有简便一些的?
[解决办法]
增加灵活性的同时也就增加了复杂性,c++比c#灵活吧,但用起来也比c#复杂吧。
如果每个treeviewitem的事件处理过程都一样的话,那你就可以遍历一下树,然后让这些个items订阅同一个事件了。
有什么更好的方法的话,记得跟大家分享一下。
[解决办法]
第一, 你的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)
{
......
}
写个伪代码 楼主看懂没?
[解决办法]
你这个只有节点一级。。给你看看我的...
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); //添加子节点
}
}
}
不管你多少级节点, 全部读出来,一个递归调用