我试图在 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.cs
namespace 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>
开心每一天1111
相关分类