لا يمكن الوصول إلى عنصر التحكم المخصص لـ Metro XAML من خلال التعليمات البرمجية الموجودة خلفه

StackOverflow https://stackoverflow.com//questions/12706327

سؤال

محاولة استخدام الحل ل هذا السؤال يعطيني مشكلة غريبة.(منقول هنا للإفادة)

هذا هو الحل لمشكلة مع ListView ابتلاع حدث النقر بزر الماوس الأيمن ومنع فتح AppBar - فئة ترث ListView ويتجاوز OnRightTapped حدث ListViewItem:

public class MyListView : ListView
{
    protected override DependencyObject GetContainerForItemOverride()
    {
        return new MyListViewItem();
    }
}

public class MyListViewItem : ListViewItem
{
    protected override void OnRightTapped(Windows.UI.Xaml.Input.RightTappedRoutedEventArgs e)
    {
        base.OnRightTapped(e);
        e.Handled = false; // Stop 'swallowing' the event
    }
}

<CustomControls:MyListView
    x:Name="ItemsList"
    ...
    SelectionMode="Single"
    RightTapped="MyListView_RightTapped">
</CustomControls:MyListView>

لقد قمت بتنفيذ عنصر تحكم مخصص كما هو محدد، في مساحة اسم جديدة تسمى CustomControls، تمامًا كما هو موضح.لقد أضفت مساحة الاسم هذه إلى MainPage.xaml

xmlns:CustomControls="using:CustomControls"

عندما أحاول بعد ذلك الإشارة إلى "ItemsList" في الكود الموجود خلفه، أحصل على خطأ في الترجمة

The name 'ItemsList' does not exist in the current context

لقد حاولت بناء الحل وإعادة بنائه وتنظيفه وإغلاق الحل وإعادة فتحه ووضع الفئات ضمن مساحة اسم المشروع الرئيسية، ولكن دون جدوى.

للتلخيص، لا يمكن لـ MainPage.cs رؤية عنصر تحكم مخصص في MainPage.xaml

التحديث 2:تمت إعادة صياغة السؤال لإزالة المشكلات غير ذات الصلة.لقد قمت أيضًا بتغيير العنوان ليعكس المشكلة الحقيقية.

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

المحلول

كنت أستخدم Name ولكن كان ينبغي أن تستخدم x:Name.يبدو أن عناصر التحكم المخصصة وعناصر تحكم المستخدم بحاجة إلى استخدامها x:Name بدلا من Name أن ينظر إليها في التعليمات البرمجية وراء.

مزيد من المعلومات حول الفرق هنا:

في WPF، ما هي الاختلافات بين سمات x:Name وName؟

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