الحصول على النص عنصر القائمة الذي تم النقر?

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

  •  06-07-2019
  •  | 
  •  

سؤال

لدي قائمة السياق أنه لا بد أن قائمة السلاسل بحيث أن كل menuitem النص هو عنصر من عناصر السلسلة القائمة.كل menuitem هو نفس معالج الحدث.ما أحاول القيام به هو معرفة أي عنصر القائمة تم النقر عندما معالج الحدث يسمى.

أعتقد أنها ستكون جميلة على التوالي إلى الأمام للقيام, ولكن أنا قليلا الحيرة.

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

يمكن للشخص لي نقطة في الاتجاه الصحيح ؟

قليلا من xaml كود أواجه مشكلة مع:

<MenuItem Header="Add Object"  ItemsSource="{Binding ObjectClassList}" Click="AddObject_Click"/>

    private void AddObject_Click(object sender, RoutedEventArgs e)
    {
        MenuItem menuItem = sender as MenuItem;

        if (menuItem == null)
        {
            return;
        }

        // menuItem.FocusedItem // ?? does not compile


    }

وذلك بفضل!

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

المحلول

وهذا يعمل بالنسبة لي، ولكن لست متأكدا 100٪ انها الطريقة الصحيحة (انها على الطريق الصحيح على الرغم من!)

MenuItem m = (MenuItem)e.OriginalSource;

وأنا اجد انها صحيحة، حيث أن "الحاوية" MENUITEM ويختتم الأحداث لعناصر القائمة السلسلة التي قمت بإضافتها. و"OriginalSource" سيكون انقر على عنصر القائمة سلسلة ...

نصائح أخرى

بعض الملاحظات التي قد تكون مفيدة عند قراءة الإجابة المقبولة من قبل Sk93:

void Handle_RoutedEvent(object sender, RoutedEventArgs e)
  • المرسل هو منطقي العنصر الذي يحتوي على تعريف معالج الحدث.
  • RoutedEventArgs.المصدر هو منطقي العنصر الذي يحتوي على تعريف معالج الحدث.
  • RoutedEventArgs.originalSource هو العنصر البصري أن المستخدم بالنقر فوق.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top