[英]Assign tab content in WPF to a page
我正在嘗試向我的應用程序添加動態選項卡。 現在,如果我點擊一個按鈕,它將打開一個新頁面。 我想要的是在新標簽頁中打開此頁面。 但是當我將標簽內容設置到頁面時,代碼會抱怨。 我想做這樣的事情
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或將其轉換為用戶控件
謝謝!
但是當我將標簽內容設置到頁面時,代碼會抱怨。
如果你在這里更具體,它不會受到傷害:)
什么是SearchPage
類? 它似乎不是WPF框架的一部分。 我在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);
雖然我認為這應該有用,但我還沒有測試過。 如果不能解決問題,請告訴我。
您始終可以直接在XAML定義中創建自己的UserControl(即使它們是部分頁面或窗口)。
在這個例子中,我假設您的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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.