西安的一位老师问:WPF中除了多窗口设计界面外,能不能在同一窗口下实现界面切换,可以做到,如下图:
![WPF中同一窗口下的界面切换 WPF中同一窗口下的界面切换](https://i-blog.csdnimg.cn/blog_migrate/64ec8644649cfb328ab0b331c54c898e.jpeg)
图中左边是Treeview控件,用于选择内容项标题,右边是Frame控件用于显示被选择的界面(不是窗口界面,而是Page页面,所以新建项目时应该选择“Page”)。Treeview控件支持多级标题项设置,例如,图中“第一章 EBlend4介绍”是一级标题项,下面的“第一节”、“第二节”是二级标题项,还可以设置三级、四级……标题项。将此控件拖入设计界面并选中此控件点右键,从弹出的快捷菜单中选择“添加TreeViewItem”,则添加的是一级标题项,如果选中某一项标题点右键,选择“添加TreeViewItem”,添加的是下一级标题项。
下面的代码选择左边的标题项,使右边的Frame控件中显示相应的页面,实现界面切换:
private void tv12_Selected(object sender, System.Windows.RoutedEventArgs e)
{
this.frame.Source=new Uri("/Page2.xaml",UriKind.Relative);
}
其中tv12是标题项的名称,使用Treeview的Selected事件,frame是Frame控件的名称。上面的内容在“基于Expression Blend 4中文版 WPF和Silverlight项目设计基础”中有介绍。
西安的这位老师如果还有问题可以再来邮件。
提问:一般程序都有选项功能,
比如pplive,迅雷,超级旋风,电驴的选项,点击左边的按钮,右边会出现相应的选项面板,功能和tabbox差不多,但样式又不一样,
我想实现这样的功能,左边的可以用按钮代替,应该可以,或者用listbox
不知道右边的面板是怎么进行切换的?
不知道哪位兄弟知道怎么实现呢?
回答:
|
二楼的方法是对的:给你我做的一个东东的例子,但是用tabControl做的.
private void 抽奖名称设置EToolStripMenuItem_Click(object sender, EventArgs e)
{
//addPages("系统设置tabPage");
tabControl1.Visible = true;
tabControl1.TabPages.Remove(抽奖名称设置tabPage);
tabControl1.TabPages.Remove(机构管理tabPage);
tabControl1.TabPages.Remove(中奖名单tabPage);
tabControl1.TabPages.Remove(奖项设置tabPage);
tabControl1.TabPages.Remove(人员管理tabPage);
tabControl1.TabPages.Add(抽奖名称设置tabPage);
}
private void 机构管理ToolStripMenuItem_Click(object sender, EventArgs e)
{
tabControl1.Visible = true;
tabControl1.TabPages.Remove(抽奖名称设置tabPage);
tabControl1.TabPages.Remove(机构管理tabPage);
tabControl1.TabPages.Remove(中奖名单tabPage);
tabControl1.TabPages.Remove(奖项设置tabPage);
tabControl1.TabPages.Remove(人员管理tabPage);
tabControl1.TabPages.Add(机构管理tabPage);
}
private void 人员管理ToolStripMenuItem_Click(object sender, EventArgs e)
{
tabControl1.Visible = true;
tabControl1.TabPages.Remove(抽奖名称设置tabPage);
tabControl1.TabPages.Remove(机构管理tabPage);
tabControl1.TabPages.Remove(中奖名单tabPage);
tabControl1.TabPages.Remove(奖项设置tabPage);
tabControl1.TabPages.Remove(人员管理tabPage);
tabControl1.TabPages.Add(人员管理tabPage);
}
private void 奖项设置ToolStripMenuItem_Click(object sender, EventArgs e)
{
tabControl1.Visible = true;
tabControl1.TabPages.Remove(抽奖名称设置tabPage);
tabControl1.TabPages.Remove(机构管理tabPage);
tabControl1.TabPages.Remove(中奖名单tabPage);
tabControl1.TabPages.Remove(奖项设置tabPage);
tabControl1.TabPages.Remove(人员管理tabPage);
tabControl1.TabPages.Add(奖项设置tabPage);
}
private void 中奖名单ToolStripMenuItem_Click(object sender, EventArgs e)
{
tabControl1.Visible = true;
tabControl1.TabPages.Remove(抽奖名称设置tabPage);
tabControl1.TabPages.Remove(机构管理tabPage);
tabControl1.TabPages.Remove(中奖名单tabPage);
tabControl1.TabPages.Remove(奖项设置tabPage);
tabControl1.TabPages.Remove(人员管理tabPage);
tabControl1.TabPages.Add(中奖名单tabPage);
}
|
|