如何在WPF中创建基页?

时间:2008-09-02 15:45:04

标签: .net wpf

我已经决定所有的WPF页面都需要注册一个路由事件。而不是包括

public static readonly RoutedEvent MyEvent= EventManager.RegisterRoutedEvent("MyEvent", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(BasePage));

在每一页上,我决定创建一个基页(名为BasePage)。我将上面的代码行放在我的基页中,然后将我的其他几个页面改为派生自BasePage。我无法理解这个错误:

  

错误12'CTS.iDocV7.BasePage'不能   是XAML文件的根,因为它   是使用XAML定义的。第1行   位置   22. C:\ Work \ iDoc7 \ CTS.iDocV7 \ UI \ Quality \ QualityControlQueuePage.xaml 1 22 CTS.iDocV7

当我可以在任何wpf页面上放置我想要使用的事件,属性,方法等时,是否有人知道如何最好地创建基页?

4 个答案:

答案 0 :(得分:25)

以下是我在当前项目中的表现。

首先我定义了一个类(正如@Daren Thomas所说 - 只是一个普通的旧C#类,没有相关的XAML文件),就像这样(是的,这是一个真正的类 - 最好不要问):

public class PigFinderPage : Page
{
    /* add custom events and properties here */
}

然后我创建一个新的页面并将其XAML声明更改为:

<my:PigFinderPage x:Class="Qaf.PigFM.WindowsClient.PenSearchPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:my="clr-namespace:Qaf.PigFM.WindowsClient"
    />

所以我将它声明为“my”命名空间中的PigFinderPage。您需要的任何页面范围资源都必须使用类似的语法声明:

<my:PigFinderPage.Resources>
    <!-- your resources go here -->
</my:PigFinderPage.Resources>

最后,切换到这个新页面的代码隐藏,并更改其类声明,使其从您的自定义类派生,而不是直接从Page派生,如下所示:

public partial class EarmarkSearchPage : PigFinderPage

请记住将其保留为部分课程。

这对我有用 - 我可以在“PigFinderPage”中定义一堆自定义属性和事件,并在所有后代中使用它们。

答案 1 :(得分:4)

另外,请查看Attached Events,看看您是否可以将活动附加到应用中的每个网页。可能比自定义中介类更容易。

答案 2 :(得分:2)

我不确定这个,但是看看你的错误,我会尝试用c#(。cs)代码定义基类 - 不要用XAML创建一个,只是扩展的标准.cs文件WPF页面类。

答案 3 :(得分:2)

Here也是一个教程! 它非常简单易用。