wpf怎样绑定数据动态绑定TabControl的多个TabItem

wpf怎么样动态绑定TabControl的多个TabItem_编程_探探数码问答网
wpf怎么样动态绑定TabControl的多个TabItem
编辑: 探探数码问答网 &&&来源:用户发布&&&发布时间:&&&查看次数:37
有谁了解wpf怎么样动态绑定TabControl的多个TabItem呀然?在线等。
【探讨解答】
wpf怎样动态绑定TabControl的多个TabItem
//viewModel: public class MainWindowModel : NotificationObject { public MainWindowModel() { Items.Add(new TabItem(){Header = "123"}); Items.Add(new TabItem(){Header = "abc"}); Items.Add(new TabItem(){Header = "a12"}); } private...
WPF我在做tabcontrl的添加按钮后,多添加了几个ta...
请问你的这个问题是怎么解决的,我现在也遇到这个难题了,求助!!!!换行原理是 tabcontrl模板中用来放置Header的Panel是一个折行panel(类似于Wrappanel)你需要换这个panel的模板即可。你可以自己用blend打开tabcontrl模板进行更改或者网上查下资源直接套用。
更多相关内容
本站内容来自网友发布,本站无法保证其部分内容的正确性,请用户一定仔细辨别。
[] &&[联系QQ:885&971&98] &
沪ICP备号&Tabcontrol动态添加和移除TabItem
来源:博客园
现在很多软件的主界面都流行设计成选项卡的模式,比如现在的IE浏览器,每打开一个新的页面,便增加一个选项卡,在选项卡的头部的右侧,放置一个关闭按钮。需要关闭的时候,直接点对应的选项卡的关闭按钮关闭。
先看一下实现以后的效果图:

左侧,是软件的功能列表,这个比较简单,用ListBox、Treeview或是Expander都可以实现。在此就不多说了,今天主要说一下,右边这个选项卡是如何实现的。如果是用Winform来实现的话,立马头就大了。要实现这样的效果,肯定得改写控件了。用WPF实现,那是相当快啊。只要重新写一个样式就可以了。
Tabcontrol的Header部分的Style如下:

&Style
TargetType="{x:Type TabItem}"&
Property="Template"&
&Setter.Value&
&ControlTemplate TargetType="{x:Type TabItem}"&
&Border x:Name="layout" BorderBrush="Gray" BorderThickness="1,1,1,0" Background="{TemplateBinding Background}"
CornerRadius="3" Margin="2,0,2,0"&
&Grid Height="20"&
&Grid.ColumnDefinitions&
&ColumnDefinition/&
&ColumnDefinition Width="25"/&
&/Grid.ColumnDefinitions&
&TextBlock
TextAlignment="Center" Text="{TemplateBinding Header}" Grid.Column="0" Margin="4,0,3,0"
VerticalAlignment="Center"
HorizontalAlignment="Center"/&
&Button Content="X" Grid.Column="1"
Height="8" Width="8" Margin="4,1,3,2" 
Tag="{TemplateBinding Header}" Click="Button_Click"
Background="{x:Null}" BorderBrush="{x:Null}" VerticalAlignment="Center"&
&Button.Template&
&ControlTemplate &
&Grid&
&Rectangle&
&Rectangle.Fill&
&VisualBrush&
&VisualBrush.Visual&
&Path x:Name="btnPath" 
Data="M0 0L10 10M0 10L10 0" Stroke="Gray"
StrokeThickness="1"/&
&/VisualBrush.Visual&
&/VisualBrush&
&/Rectangle.Fill&
&/Rectangle&
&/Grid&
&ControlTemplate.Triggers&
&Trigger Property="IsMouseOver" Value="True"&
&Setter TargetName="btnPath" Property="Stroke" Value="Red"/&
&/Trigger&
&/ControlTemplate.Triggers&
&/ControlTemplate&
&/Button.Template&
&/Button&
&/Grid&
&/Border&
&ControlTemplate.Triggers&
&Trigger Property="IsSelected" Value="True"&
&Setter Property="Background" Value="White"/&
&Setter TargetName="layout" Property="Margin" Value="2,0,2,-1.5"/&
&/Trigger& &Trigger Property="IsSelected" Value="false"&
&Setter Property="Background" Value="LightBlue"/&
&/Trigger&
&/ControlTemplate.Triggers&
&/ControlTemplate&
&/Setter.Value&
&/Setter&
&/Style&

那么,如何动态添加TabItem呢?软件的功能界面一般是做成一个用户控件,在代码中根据所选择的功能进行判断,选择相对应的功能界面,把TabItem的Content属性设置成对应的用户控件就可以了。比如,我在左侧软件功能栏项目的双击事件中加入如下代码:(注:因只是演示,为了节省时间,我只做的用户管理的界面)

//目录树双击
private void TreeView_MouseDoubleClick(object sender, MouseButtonEventArgs e)
TreeView trv =sender as TreeV
TreeViewItem
tempItem= trv.SelectedItem as TreeViewI
string header = tempItem.Header.ToString();
TabItem temptb = new TabItem();
temptb.Header =
if (header == "用户管理")
UCUserManage uc = new UCUserManage();
temptb.Content =
this.MainPanel.Items.Add(temptb);
MainPanel.SelectedIndex = MainPanel.Items.Count - 1;
}

以上界面中,左侧是一个Treeview控件,代码中应该还要加一个判断,判断要添加的界面是否已经打开,如果打开了就直接跳转到那个界面,在这里我省略了这些代码。
关闭选项卡的代码如下,在Itemheader右边的Button的Click事件中加入如下代码:

//关闭选项卡
private void Button_Click(object sender, RoutedEventArgs e)
Button btn = sender as B
string header = btn.Tag.ToString();
foreach (TabItem item in MainPanel.Items)
if (item.Header.ToString() == header)
MainPanel.Items.Remove(item);
break;
}

小功造成!
虽然界面做得很粗糙,但是,希望通过以上的讲解可以帮助到大家。
免责声明:本站部分内容、图片、文字、视频等来自于互联网,仅供大家学习与交流。相关内容如涉嫌侵犯您的知识产权或其他合法权益,请向本站发送有效通知,我们会及时处理。反馈邮箱&&&&。
学生服务号
在线咨询,奖学金返现,名师点评,等你来互动本帖子已过去太久远了,不再提供回复功能。

我要回帖

更多关于 wpf treeview 绑定 的文章

 

随机推荐