wpf combobox内嵌treeview的问题

ccb8888 2014-03-23 10:59:07
此功能是参考此链接做的. http://www.silverlightchina.net/html/study/WPF/2013/0219/21920.html
xaml代码如下

<ComboBox HorizontalAlignment="Left" Name="FParentId" Margin="295,13,0,0" VerticalAlignment="Top" Width="120" RenderTransformOrigin="0.392,0.565"
SelectedIndex="0" DisplayMemberPath="FName" SelectedValuePath="ID"
>
<ComboBoxItem Height="0"></ComboBoxItem>
<ComboBoxItem>
<ComboBoxItem.Template>
<ControlTemplate>
<TreeView Name="lftTree" Margin="0" ItemsSource="{Binding}" SelectedItemChanged="lftTree_SelectedItemChanged"
DisplayMemberPath="FName" SelectedValuePath="ID" >
<TreeView.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<Setter Property="IsExpanded" Value="{Binding IsExpand}"></Setter>
</Style>
</TreeView.ItemContainerStyle>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate
ItemsSource="{Binding YCommonTypeListChild}">

<TextBlock Text="{Binding FName}"></TextBlock>

</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
</ControlTemplate>
</ComboBoxItem.Template>

</ComboBoxItem>

</ComboBox>


后台代码:


public CommonTypeListOp(){
InitializeComponent();
this.FParentId.DataContext = bllCt.GetTrees(tList);
}
private void lftTree_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
var a = e.NewValue as Model.YCommonTypeList;
if (a.ID > 0)
{
this.FParentId.Items[0] = a;
this.FParentId.SelectedIndex = 0;
}

}



大概运行效果:
第一次点击combobox:


点击treeview上的节点后:


最后在点击combobox:


从结果可以看到点击treeview上的节点已经去到第一个comboxitem,但就是不明白为什么会显示在在combobox上,,
还有一个问题就是。。我的第一个comboxitem高度已经设置为0,但他还是显示出来。不知道如何把他隐藏起来!

...全文
663 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
cool3000 2016-04-17
  • 打赏
  • 举报
回复
给我5分就给你
freehooke 2016-03-05
  • 打赏
  • 举报
回复
引用 11 楼 cool3000 的回复:
我以经解决了这个问题! private void comboBox_DropDownOpened(object sender, EventArgs e) { //--打开时 隐藏要显示的项 cbItemDisplay.Visibility = System.Windows.Visibility.Collapsed; cbItemTreeView.Visibility = System.Windows.Visibility.Visible; } private void comboBox_DropDownClosed(object sender, EventArgs e) { //--关闭时,使显示的项可见 cbItemDisplay.Visibility = System.Windows.Visibility.Visible; cbItemTreeView.Visibility = System.Windows.Visibility.Collapsed; comboBox.SelectedItem = cbItemDisplay;//设置当前的选中项为显示项 } 这两步就OK了
[/quote] 你好,有比较完整的代码吗?谢谢freehooke@hotmail.com
cool3000 2015-12-20
  • 打赏
  • 举报
回复
我以经解决了这个问题! private void comboBox_DropDownOpened(object sender, EventArgs e) { //--打开时 隐藏要显示的项 cbItemDisplay.Visibility = System.Windows.Visibility.Collapsed; cbItemTreeView.Visibility = System.Windows.Visibility.Visible; } private void comboBox_DropDownClosed(object sender, EventArgs e) { //--关闭时,使显示的项可见 cbItemDisplay.Visibility = System.Windows.Visibility.Visible; cbItemTreeView.Visibility = System.Windows.Visibility.Collapsed; comboBox.SelectedItem = cbItemDisplay;//设置当前的选中项为显示项 } 这两步就OK了[/quote]
cool3000 2015-12-20
  • 打赏
  • 举报
回复
我以经解决了这个问题! private void cbMain_DropDownOpened(object sender, EventArgs e) { //--打开时 隐藏要显示的项 cbItemDisplay.Visibility = System.Windows.Visibility.Collapsed; cbItemTreeView.Visibility = System.Windows.Visibility.Visible; } private void cbMain_DropDownClosed(object sender, EventArgs e) { //--关闭时,使显示的项可见 cbItemDisplay.Visibility = System.Windows.Visibility.Visible; cbItemTreeView.Visibility = System.Windows.Visibility.Collapsed; comboBox.SelectedItem = cbItemDisplay;//设置当前的选中项为显示项 } 这两步就OK了
wtxian 2014-08-29
  • 打赏
  • 举报
回复
怎么获取 TreeView Name="lftTree"  lftTree无效
Aricc 2014-07-17
  • 打赏
  • 举报
回复
解决了没? 我也在找。。。。 ^_^
ccb8888 2014-03-24
  • 打赏
  • 举报
回复
ccb8888 2014-03-24
  • 打赏
  • 举报
回复
现在已经解决第一个问题(就是选择treeview上的节点可以正常显示在combobox上)。 现在就剩下最后一个问题:就是隐藏掉第一个comboxitem。。。虽然设置了高度为0,但是这样还是不行!
没花鹿 2014-03-24
  • 打赏
  • 举报
回复
百度 : C# ComboBox和Treeview组合
没花鹿 2014-03-24
  • 打赏
  • 举报
回复
ccb8888 2014-03-24
  • 打赏
  • 举报
回复
ccb8888 2014-03-23
  • 打赏
  • 举报
回复
ccb8888 2014-03-23
  • 打赏
  • 举报
回复
补充一下:本次试验是用.net 4.0来做的
案例中的控件全部有源代码示范学习为主。 1.Calendar组件(日历组件) 2.ChildWindow组件(子窗体组件) 3.浮动窗体组件 4.GridSplitter组件 5.TabControl组件 6-7-8.TreeView组件 9.DtarGrid 10.强大的DataGrid组件[2]_数据交互之ADO.NET Entity Framework 11.强大的DataGrid组件[3]_数据交互之Linq to SQL——Silverlight学习笔记 12-13.强大的DataGrid组件[4]_实现CURD 14.强大的DataGrid组件[6]_调用存储过程服务端分页 15.强大的DataGrid组件[7]_自定义DataGrid 16.强大的DataGrid组件[8]_内嵌ComboBox动态数据联动 17.强大的DataGrid组件[9]_自定义头模板(HeaderTemplate) 18.强大的DataGrid组件[10]_自定义脚模板(FooterTemplate) 19.强大的DataGrid组件[11]_主从(Master-Details)的实现 20.强大的DataGrid组件[12]_分组(Group) 21.强大的DataGrid组件[13]_字段过滤(Filter) 22.强大的DataGrid组件[14][Final]_数据验证 23.有关DataForm组件的研究_基础知识和实现服务端批量CURD 24.有关DataForm组件的研究_显示多重数据模型集合 25.有关DataForm组件的研究_自定义DataForm模板 26.有关Data Input类组件的研究 27.有关Accordion组件的研究 摘要: Accordion组件在开发中常用于信息的分类显示,用于显示数据验证信息不错 28.TransitioningContentControl组件: TransitioningContentControl控件主要应用于变化内容的过渡呈现效果 29.有关Navigation的: 在Silverlight的程序设计中经常需要在多个XAML页面之间进行切换,以进行不同的功能操作 30.有关ImplicitStyleManager组件: ImplicitStyleManager组件的作用是封装一个附加的行为,该行为将一个框架元素内的相关资源词典内的样式传播至它的子元素。该组件同样提供了附加属性,使资源字典能从外部源加载。层次状样式同样被支持,这与WPF相类似 31.有关Theme(主题): 在Silverlight的开发中,为组件设置统一的主题会让程序的外观显得美观大方 32.有关Expander组件的研究 摘要: Expander组件常用做边栏目录的分类,比如Windows中“我的文档”的侧边栏。本文将为大家介绍该组件的基本特性以及实际应用 33.有关ViewBox组件 摘要: ViewBox的作用是拉伸或延展位于其中的组件,使之有更好的布局及视觉效 34.有关WrapPanel组件 摘要: WrapPanel组件作用是从左至右或从上至下依次安排位于其中的元素的位置,当元素超过该组件边缘时,它们将会被自动安排至下一行或列。该组件一般用于文本布局、拾色器、图片选择等。本文将为大家介绍该组件的基本特性以及应用实例 35.有关AutoCompleteBox组件 摘要: AutoCompleteBox(自动完成框)组件能加快我们的输入效率,同时也能够提高输入的联想效果 37.有关AutoCompleteBox组件的研究[2]_常用特性实例介绍 38.有关AutoCompleteBox组件的研究[3]_FilterMode和ItemFilter 摘要: 对于AutoCompleteBox组件而言,设置合理的过滤模式有利于对数据的精确筛选 39.有关AutoCompleteBox组件的研究[4]_下拉框内嵌DataGrid与被嵌入DataGrid 摘要: 在AutoCompleteBox组件下拉框中嵌入DataGrid可以让我们更好地组织候选数据以达到更好的显示效果。与此类似的,在DataGrid组件中嵌入AutoCompleteBox组件可以便于我们进行数据的输入。本文将为大家讲述如何实现这两种效果 40.有关AutoCompleteBox组件的研究[5][Final]_集成搜索引擎搜索建议(Search Suggestion) 摘要: 在AutoCompleteBox组件中集成搜索引擎的功能是十分常见的,这有助于我们更好地与Web进行交互。本文将为大家讲述如何在在AutoCompleteBox组件中集成搜索引擎的搜索建议 41.有关Rating组件的研究 摘要: 我们经常能在网上发现为新闻、博客文章、图片或是电影视频的评分功能。在Silverlight中,使用Rating组件便能助我们完成以上的功能。本文将为大家介绍该组件的基础知识以及自定义应用方面等方面的内容 42.有关Input类组件的研究 摘要: Input输入类控件丰富了我们的输入形式,合理地运用之,可以加快我们录入的速度。本文将为大家介绍Input类组件中的其他4个组件ButtonSpinner、DomainUpDown、NumericUpDown以及TimePicker的基础知识及其简单运用 43.有关DataVisualization类组件的研究 摘要: Data Visualization类组件以直观的图表方式显示数据的分布,能够让我们更好地分析各数据的内在联系。本文主要向大家介绍该类组件的基本特性以及使用实例

111,103

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧