【问题标题】:Subclassing WPF Window子类化 WPF 窗口
【发布时间】:2010-07-08 03:01:06
【问题描述】:

我创建了一个 WPF 窗口

比我修改它的类定义为:

public partial class myWindow : mySubclassedWindow

编译器抛出:

“'myWindow' 的部分声明不得指定不同的基类”

myWindow.Xaml:

x:Class="WpfGridtest.myWindow"

所以在某个地方,还有另一个部分类,它继承自“Window”,但我找不到它。如何覆盖我的案例以使用子类窗口?


感谢乔恩,这就是问题所在。 还发现了这篇有用的文章: http://geekswithblogs.net/lbugnion/archive/2007/03/02/107747.aspx

【问题讨论】:

    标签: wpf subclassing


    【解决方案1】:

    这将在 myWindow 本身的声明中 - 设计人员将根据您的元素类型基于 XAML 生成部分类型的另一半。

    您可以改用<mySubclassedWindow> 的元素,只要您为其提供适当的命名空间和程序集引用。

    编辑:好的,这是一个简短的例子,在一个名为 WpfApplication 的项目中。我的Window 子类:

    using System.Windows;
    
    namespace WpfApplication
    {
        public class EnhancedWindow : Window
        {
        }
    }
    

    我的 XAML:

    <y:EnhancedWindow x:Class="WpfApplication.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:y="clr-namespace:WpfApplication"
            Title="MainWindow" Height="350" Width="525">
    </y:EnhancedWindow>
    

    我的部分类型:

    namespace WpfApplication
    {
        public partial class MainWindow : EnhancedWindow
        {
            public MainWindow()
            {
                InitializeComponent();
            }
        }
    }
    

    这一切都没有问题。我想这就是你想要做的,对吧?

    【讨论】:

    • 感谢 Jon,您是指文件开头的
    • @Sonic:是的,我就是这个意思。您需要修改它以引用您的子类类型而不是Window。我只是想提出一个简短的演示......
    • @JonSkeet 这个解决方案的行为非常有趣,在 XAML 中使用 EnhancedWindow 不会提供智能感知,但如果从外部程序集引用了 EnhancedWindow,它就会提供。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-19
    • 2015-08-05
    • 2017-11-24
    • 1970-01-01
    相关资源
    最近更新 更多