我正在尝试向我的应用添加动态标签。现在,如果我点击一个按钮,它将打开一个新页面。我想要的是在新标签页中打开此页面。但是当我将标签内容设置到页面时,代码会抱怨。我想做这样的事情
private void bttnGoToClientsOnClick(object sender, RoutedEventArgs e)
{
var content = new TextBlock();
TabItem tab = new TabItem();
tab.Header = "Search Page";
SearchPage sp = new SearchPage();
tab.Content = sp;
tabControl.Items.Add(tab);
this.NavigationService.Navigate(sp);
}
有什么方法可以将我的页面转换为usercontrol或将其转换为用户控件
谢谢!
答案 0 :(得分:2)
但是当我将标签内容设置为页面时,代码会抱怨。
如果你在这里更具体,那就不会受到伤害:)
什么是SearchPage
课程?它似乎不是WPF框架的一部分。我在Google上搜索了它
http://www.intersoftpt.com/网站。是吗?
TabItem.Content
必须是ContentControl
类型,SearchPage
- 显然 - 不是。我确定您需要将此SearchPage
对象嵌入到某个控件展示器(例如面板)中,然后才能将其分配给TabItem.Content
。
<强>更新强>
试试这个,然后:
TabItem tab = new TabItem();
tab.Header = "Search Page";
SearchPage sp = new SearchPage();
this.NavigationService.Navigate(sp);
// ----------------------------------------------------
var frame = new Frame(); // !
frame.Navigate(sp); // !
tab.Content = frame; // !
// ----------------------------------------------------
tabControl.Items.Add(tab);
虽然我认为这应该有用,但我还没有测试过。如果不能解决问题,请告诉我。
答案 1 :(得分:2)
您始终可以直接在XAML定义中创建自己的UserControls(即使它们是部分页面或窗口)。
在这个例子中,我假设您的SearchClass是在[YourProject] .Model命名空间中定义的(其中[YourProject]是项目的名称)
<UserControl x:Class="WpfApplication1.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:search="clr-namespace:[YourProject].Model">
<search:SearchClass>
<!--<Grid>
...ANYTHING YOU WANT HERE ! ...
</Grid>-->
</search:SearchClass>
</UserControl>
现在您可以创建UserControl的实例,即使在XAML或代码隐藏中也是如此(请记住只是正确声明命名空间!):
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:ctrls="clr-namespace:WpfApplication1"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<UserControl1 />
</Grid>
</Window>
...这是我的代码隐藏......
UserControl1 myControl = new UserControl1();