WPF選項卡頁面分離之Page調用Window類


此項目源碼下載地址:https://github.com/lizhiqiang0204/WPF_PageCallWindow

如果Page與Window直接沒有任何調用就用這種方法https://www.cnblogs.com/lizhiqiang0204/p/11612383.html就行了,但是如果有調用關系的話,還需在這個方法上進一步增加點內容。

第1步:為每個選項卡添加初始化事件:InitTab1,InitTab2,InitTab3,以及為每個選項卡的Frame起個名字frmPage1,frmPage2,frmPage3.

    <Grid>
        <TabControl>
            <TabItem Header="Page1" Initialized="InitTab1">
                <Frame Name ="frmPage1"  Source="/WpfApp1;component/Pages/Page1.xaml"/>
            </TabItem>
            <TabItem Header="Page2" Initialized="InitTab2">
                <Frame Name ="frmPage2" Source="/WpfApp1;component/Pages/Page2.xaml"/>
            </TabItem>
            <TabItem Header="Page3" Initialized="InitTab3">
                <Frame Name ="frmPage3" Source="/WpfApp1;component/Pages/Page3.xaml"/>
            </TabItem>
        </TabControl>
    </Grid>

第2步:為每個選項卡初始化事件添加初始化內容

        private void InitTab1(object sender, EventArgs e)
        {
            Page1 a = new Page1();
            this.frmPage1.Content = a;
            a.ParentWindow = this;
        }

        private void InitTab2(object sender, EventArgs e)
        {
            Page2 a = new Page2();
            this.frmPage2.Content = a;
            a.ParentWindow = this;
        }

        private void InitTab3(object sender, EventArgs e)
        {
            Page3 a = new Page3();
            this.frmPage3.Content = a;
            a.ParentWindow = this;
        }

第3步:為每個Page添加父窗體

    public partial class Page1 : Page
    {
        private MainWindow _parentWin;
        public MainWindow ParentWindow
        {
            get { return _parentWin; }
            set { _parentWin = value; }
        }
        public Page1()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            ParentWindow.Title = "標題1";
            ParentWindow.CallFromChild("Page1");
        }
    }

因為在選項卡初始化事件中已經將ParentWindow實例化成了MainWindow,(a.ParentWindow = this;這里的this就是MainWindow)所以調用ParentWindow里的屬性和方法就等於調用MainWindow里的屬性和方法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM