亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 WPF 窗口中訪問繼承的成員?

如何在 WPF 窗口中訪問繼承的成員?

C#
MMTTMM 2023-07-22 16:36:34
我試圖在 WPF 應用程序中為我的窗口創建一個基類,但我無法在派生類中訪問它們的成員。例如,這是基本窗口:namespace MyApp.Windows{    public class BaseWindow : Window    {        public int MyProp { get; set; }    }}這是一個窗口:public partial class SomeWindow : BaseWindow{    public SomeWindow()    {        InitializeComponent();        Loaded += SomeWindow_Loaded;    }    private void SomeWindow_Loaded(object sender, RoutedEventArgs e)    {        MyProp = do something;    }}如果我像這樣保留它,該MyProp屬性工作得很好,但我收到一個InitializeComponent()無法識別的錯誤。因此,在窗口 xaml 中我更改x:Class如下:之前<Window x:Class="MyApp.SomeWindow"后<Window x:Class="MyApp.Windows.BaseWindow"現在,InitializeComponent()不再給我帶來任何問題,但MyProp突然不被識別。為什么?如果有幫助的話,我想要的是讓所有窗口在加載后引發一個事件(事件被觸發Loaded),并且我不想為我擁有的每個窗口編寫這段代碼,所以我想我可以在基類中編寫這段代碼,從中派生我的窗口,然后一切正常。編輯:這是所有代碼。BaseWindow.cs(沒有其他 xaml):using System.Windows;namespace MyApp.Windows{    public class BaseWindow : Window    {        public int MyProp { get; set; }    }}MainWindow.xaml.csnamespace MyApp.Windows{    public partial class MainWindow : BaseWindow    {        public MainWindow()        {            InitializeComponent();        }    }}主窗口.xaml:<myapp:BaseWindow x:Class="MyApp.Windows.BaseWindow"        xmlns:myapp="clr-namespace:MyApp.Windows"        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"        xmlns:local="clr-namespace:MyApp"        mc:Ignorable="d"        Title="MainWindow" Height="450" Width="800">    <Grid>    </Grid></myapp:BaseWindow>
查看完整描述

1 回答

?
開心每一天1111

TA貢獻1836條經驗 獲得超13個贊

為了將 SomeWindow 的基類從 更改為Window,BaseWindow您需要替換它出現的任何位置Window。BaseWindow


所以


public partial class SomeWindow : Window

變成


public partial class SomeWindow : BaseWindow


<Window x:Class="MyApp.Windows.SomeWindow" ...>

變成


<myapp:BaseWindow x:Class="MyApp.Windows.SomeWindow"

                  xmlns:myapp="clr-namespace:MyApp.Windows" ...>

帶有不可避免的 XAML 命名空間前綴。


這是上面示例中使用的 BaseWindow 類:


namespace MyApp.Windows

{

    public class BaseWindow : Window

    {

        public int MyProp { get; set; }


        public BaseWindow()

        {

            Loaded += BaseWindow_Loaded;

        }


        private void BaseWindow_Loaded(object sender, RoutedEventArgs e)

        {

        }

    }

}


查看完整回答
反對 回復 2023-07-22
  • 1 回答
  • 0 關注
  • 142 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號