ComboBox+TreeView

[一篮饭特稀原创,转载请注明出处http://www.cnblogs.com/wanghafan/archive/2012/05/10/2493799.html]

银光中ComboBox+TreeView构成自定义控件: 

思路1:textbox+button+treeview 缺点:不能跨ChildWindow、零散 [实现] 

思路2:ComboBox+TreeView+textbox 优点:可以跨ChildWindow [实现]+[推荐

思路3:ComboBox+TreeView 优点:可以跨ChildWindow、紧凑 [未实现] 

给出思路2的核心代码:

xaml:

View Code
1 <ComboBox Height="21" x:Name="cbTree">
2     <ComboBoxItem>
3      <ComboBoxItem.Content>
4        <controls:TreeView x:Name="tvLeftOrgan" SelectedItemChanged="tvLeftOrgan_SelectedItemChanged"/>          
5      </ComboBoxItem.Content>
6     </ComboBoxItem>
7    </ComboBox>
8    <TextBox Height="21" x:Name="tbTree"/>    

 xaml.cs:

View Code
 1 private void tvLeftOrgan_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
 2         {
 3             if (tvLeftOrgan.Items.Count > 0)
 4             {
 5                 ComboBoxSelect tvs = new ComboBoxSelect();
 6                 tvs.id = ((TreeViewItem)tvLeftOrgan.SelectedItem).DataContext.ToString();
 7                 tvs.name = ((TreeViewItem)tvLeftOrgan.SelectedItem).Header.ToString();   
 8                 tbTree.Text = tvs.name;
 9             }
10         }
11 
12     public class ComboBoxSelect : ComboBoxItem
13     {
14         public string name=string.Empty;
15         public string id = string.Empty;
16     }

 思路3: 

与思路2大体相同,但是:

View Code
 1   public class info
 2     {
 3         public string name = "fdfs";
 4         public string id = "df";
 5         public info(string n, string i)
 6         {
 7             name = n;
 8             id = i;
 9                 
10         }
11         public override string ToString()
12         {
13             return name;
14         }
15     }
16 
17         void cbTree_DropDownOpened(object sender, EventArgs e) //打开时,清空并加载treeview
18         {
19             cbTree.Items.Clear();
20             cbTree.Items.Add(tv);
21         }
22         void cbTree_DropDownClosed(object sender, EventArgs e) //关闭时,清空并加载1个treeviewitem,这样可以防止选中整个treeview而不显示选中的内容
23         {
24             cbTree.Items.Clear();
25             cbTree.Items.Add((tv.SelectedItem as TreeViewItem).Header);
26             cbTree.SelectedIndex = 0;
27         }

  

转载于:https://www.cnblogs.com/wanghafan/archive/2012/05/10/2493799.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值