后台动态生成TabControl,页面切换及传值
2015-10-20 08:46
387 查看
最终效果:
![](https://img-blog.csdn.net/20151020090956187?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
页面projectEMCS:前台:
<Grid x:Name="Page">
<TextBlock x:Name="TxtType" Visibility="Hidden"></TextBlock>
<TabControl x:Name="TabControls" Loaded="TabControls_Loaded">
</TabControl></Grid>
后台:
#region 加载所属系统
private void TabControls_Loaded(object sender, RoutedEventArgs e)
{
TabControl TC = sender as TabControl;
#region 监控主页加载
//Tab按钮
System.Windows.Controls.TabItem TabIndex = new TabItem();
//BORDER
System.Windows.Controls.Border BIndex = new Border();
//Frame
System.Windows.Controls.Frame FIndex = new Frame();
TxtType.Text ="12343423434";
//Tab标题
TabIndex.Header = "监控主页";
TabIndex.Tag = "监控主页";
//填充按钮容器
FIndex.Source = new Uri("../inpages/projectEMCS/projectEMCSIndexL.xaml", UriKind.Relative);
BIndex.Child = FIndex;
TabIndex.Content = BIndex;
TC.Items.Add(TabIndex);
//默认选中监控主页
TC.SelectedItem = TabIndex;
#endregion
#region 加载系统
Dictionary<string, string> GetSystem = GlobalRepertories.DataDictionary["所属系统"];
foreach (KeyValuePair<string, string> kv in GetSystem)
{
//Tab按钮
System.Windows.Controls.TabItem TabIndex2 = new TabItem();
//BORDER
System.Windows.Controls.Border BIndex2 = new Border();
//Frame
// System.Windows.Controls.Frame FIndex2 = new Frame();
TxtType.Text = kv.Key;
//Tab标题
TabIndex2.Header = kv.Key;
TabIndex2.Tag = kv.Value;
//PIndex.Tag = kv.Value;
projectEMCSDoorsL aaa = new projectEMCSDoorsL();
aaa.TxtKey.Text = kv.Key; //页面上的控件传值 第一种方法
aaa.Type = kv.Key; //页面上声明的一个变量用于传值 第二种方法
BIndex2.Child = aaa;
TabIndex2.Content = BIndex2;
TC.Items.Add(TabIndex2);
}
#endregion
}
#endregion
页面projectEMCSDoorsL:前台:
定义一个控件用于传值
<TextBox Width="100" x:Name="TxtKey"/>
后台:
函数:
public projectEMCSDoorsL()
{
InitializeComponent();
//注,此处是获取不到TxtKey的值的。 只有在 页面的Loaded="UserControl_Loaded"事件里才能获取到该值
}
//获取值的页面加载事件
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
// MessageBox.Show(Convert.ToString(this.Type)); 第二种方法获取
// MessageBox.Show(TxtKey.Text.ToString()); 第一种方法获取
}
页面projectEMCS:前台:
<Grid x:Name="Page">
<TextBlock x:Name="TxtType" Visibility="Hidden"></TextBlock>
<TabControl x:Name="TabControls" Loaded="TabControls_Loaded">
</TabControl></Grid>
后台:
#region 加载所属系统
private void TabControls_Loaded(object sender, RoutedEventArgs e)
{
TabControl TC = sender as TabControl;
#region 监控主页加载
//Tab按钮
System.Windows.Controls.TabItem TabIndex = new TabItem();
//BORDER
System.Windows.Controls.Border BIndex = new Border();
//Frame
System.Windows.Controls.Frame FIndex = new Frame();
TxtType.Text ="12343423434";
//Tab标题
TabIndex.Header = "监控主页";
TabIndex.Tag = "监控主页";
//填充按钮容器
FIndex.Source = new Uri("../inpages/projectEMCS/projectEMCSIndexL.xaml", UriKind.Relative);
BIndex.Child = FIndex;
TabIndex.Content = BIndex;
TC.Items.Add(TabIndex);
//默认选中监控主页
TC.SelectedItem = TabIndex;
#endregion
#region 加载系统
Dictionary<string, string> GetSystem = GlobalRepertories.DataDictionary["所属系统"];
foreach (KeyValuePair<string, string> kv in GetSystem)
{
//Tab按钮
System.Windows.Controls.TabItem TabIndex2 = new TabItem();
//BORDER
System.Windows.Controls.Border BIndex2 = new Border();
//Frame
// System.Windows.Controls.Frame FIndex2 = new Frame();
TxtType.Text = kv.Key;
//Tab标题
TabIndex2.Header = kv.Key;
TabIndex2.Tag = kv.Value;
//PIndex.Tag = kv.Value;
projectEMCSDoorsL aaa = new projectEMCSDoorsL();
aaa.TxtKey.Text = kv.Key; //页面上的控件传值 第一种方法
aaa.Type = kv.Key; //页面上声明的一个变量用于传值 第二种方法
BIndex2.Child = aaa;
TabIndex2.Content = BIndex2;
TC.Items.Add(TabIndex2);
}
#endregion
}
#endregion
页面projectEMCSDoorsL:前台:
定义一个控件用于传值
<TextBox Width="100" x:Name="TxtKey"/>
后台:
函数:
public projectEMCSDoorsL()
{
InitializeComponent();
//注,此处是获取不到TxtKey的值的。 只有在 页面的Loaded="UserControl_Loaded"事件里才能获取到该值
}
//获取值的页面加载事件
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
// MessageBox.Show(Convert.ToString(this.Type)); 第二种方法获取
// MessageBox.Show(TxtKey.Text.ToString()); 第一种方法获取
}
相关文章推荐
- C#动态生成PictureBox并指定图片的方法
- jQuery获取动态生成的元素示例
- javascript中兼容主流浏览器的动态生成iframe方法
- JSP动态生成验证码存储在session作用范围内
- js如何为动态生成的标签添加事件
- 解决 DotNetBar TabControl 在关闭所有TAB后,背景为黑色
- wpf利用后台生成grid表格以及tabcontrol,border等用法
- jquery中对动态生成的标签不会响应click事件
- jquery中对动态生成的标签不会响应click事件
- How to Use MFC Tab Control in Developing VC++ Applications
- php动态生成JavaScript代码
- 修改TabControl选项卡名字
- [c#]tabControl 点击tabpage触发事件
- 计算机选课程序(C#实验)
- VS2012 C# 隐藏/显视 tabControl 中的 TabPages 页
- jquery 动态生成的元素的事件无法绑定
- C# tagcontrol 隐藏 tagpage
- easyui combobox实现动态级联
- Winfrom 在tabcontrol中嵌入form
- 稳扎稳打Silverlight(6) - 2.0控件之ScrollViewer, Slider, StackPanel, TabControl, TextBlock