سؤال

لقد قررت أن كل 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 الصفحة ؟

هل كانت مفيدة؟

المحلول

هنا كيف فعلت هذا في المشروع الحالي.

أولا لقد تعريف فئة (كما @دارين توماس قال - مجرد سهل القديمة الفئة 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"
    />

لذا تعلن أنها PigFinderPage في "بلدي" مساحة الاسم.أي صفحة على نطاق الموارد تحتاج إلى أن أعلن باستخدام مماثلة بناء الجملة:

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

وأخيرا التحول إلى التعليمات البرمجية-خلف هذه الصفحة الجديدة و تغيير فئة الإعلان حتى أنه مستمد من فئة مخصصة بدلا من مباشرة من الصفحة مثل هذه:

public partial class EarmarkSearchPage : PigFinderPage

تذكر أن تبقي على أنها فئة جزئية.

هذا العمل هدية بالنسبة لي - لا يمكن تحديد مجموعة من الخصائص المخصصة و الأحداث مرة أخرى في "PigFinderPage" واستخدامها في جميع أحفاد.

نصائح أخرى

أيضا إلقاء نظرة على تعلق الأحداث ومعرفة ما إذا كان يمكنك إرفاق هذا الحدث الخاص بك إلى كل صفحة في التطبيق الخاص بك.قد يكون أسهل من مخصص وسيط الدرجة.

أنا غير متأكد من هذا, ولكن في خطأ ، وأود أن محاولة تحديد الفئة الأساسية فقط مع c# (.cs) رمز - لا تخلق مع XAML, مجرد القياسية .cs الملف الذي يمتد WPF صفحة الفئة.

هنا هو البرنامج التعليمي أيضا !انها بسيطة جدا وسهلة.

القليل من التحديث :أنا فقط حاولت أن تفعل ذلك ، و لم يفلح.وهو ما غيرت لحل المشكلة:

1.في العديد من المنتديات ، سوف تقرأ هذه الصفحات الفرعية يجب أن ترث من فئة cs دون XAML.على الرغم من أنه يعمل.أنا لا ترث من الطبيعي XAML الصفحة دون أي مشكلة.

2.استبدال التعليمة البرمجية التالية :

<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 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="using:Qaf.PigFM.WindowsClient"
/>

لأنه عندما كان "clr-مساحة" بدلا من "استخدام" ، التحسس يمكن أن تعترف PigFinderPage ، ولكن ليس المترجم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top