我已经决定所有的WPF页面都需要注册一个路由事件.而不是包括
public static readonly RoutedEvent MyEvent= EventManager.RegisterRoutedEvent("MyEvent", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(BasePage));
Run Code Online (Sandbox Code Playgroud)
在每一页上,我决定创建一个基页(名为BasePage).我将上面的代码行放在我的基页中,然后将我的其他几个页面改为派生自BasePage.我无法通过这个错误:
错误12'CTS.iDocV7.BasePage'不能是XAML文件的根,因为它是使用XAML定义的.第1行位置22. C:\ Work\iDoc7\CTS.iDocV7\UI\Quality\QualityControlQueuePage.xaml 1 22 CTS.iDocV7
当我可以在任何wpf页面上放置我想要使用的事件,属性,方法等时,是否有人知道如何最好地创建基页?
Mat*_*ton 27
这是我在当前项目中完成此操作的方法.
首先我定义了一个类(正如@Daren Thomas所说 - 只是一个普通的旧C#类,没有相关的XAML文件),就像这样(是的,这是一个真正的类 - 最好不要问):
public class PigFinderPage : Page
{
/* add custom events and properties here */
}
Run Code Online (Sandbox Code Playgroud)
然后我创建一个新的页面并将其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"
/>
Run Code Online (Sandbox Code Playgroud)
所以我将它声明为"my"命名空间中的PigFinderPage.您需要使用类似的语法声明您需要的任何页面范围的资源:
<my:PigFinderPage.Resources>
<!-- your resources go here -->
</my:PigFinderPage.Resources>
Run Code Online (Sandbox Code Playgroud)
最后,切换到这个新页面的代码隐藏,并更改其类声明,使其从您的自定义类派生,而不是直接从Page派生,如下所示:
public partial class EarmarkSearchPage : PigFinderPage
Run Code Online (Sandbox Code Playgroud)
请记住将其保留为部分类.
这对我有用 - 我可以在"PigFinderPage"中定义一堆自定义属性和事件,并在所有后代中使用它们.
| 归档时间: |
|
| 查看次数: |
13483 次 |
| 最近记录: |