簡體   English   中英

將WPF中的選項卡內容分配給頁面

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM