إنشاء عنصر تحكم مخصص وهذا هو زر التي لديها أيضا عناصر وItemsSource؟
-
06-07-2019 - |
سؤال
وأنا أحاول لإنشاء عنصر تحكم SplitButton
يستخدم ContextMenu
لعرض بنودها. وSplitButton
وتستمد حاليا من Button
. لدي PART_DropDownInitiator
هذا هو رمز قليلا ينقر المستخدم على لإظهار ContextMenu
لSplitButton
لاظهار بنودها.
والمشكلة هي أن أحاول لإعداد ContextMenu
الافتراضي داخل SplitButton
وTemplate
أو أسلوب، وبهذه الطريقة لا يكون لدى المستخدم للسيطرة على القيام بذلك بأنفسهم. في البداية كنت احسب أن يكون مجرد المستخدم فقط تعيين الخاصية SplitButton.ContextMenu.Items
في XAML، ولكن هذا لا يبدو ممكنا. الآن أود أن إضافة Items
وItemsSource
خصائص لSplitButton
أن ContextMenu
داخل القالب SplitButton
يمكن ربط ذلك. ويجب على المستخدم من مجرد أن تعيين Items
أو الممتلكات ItemsSource
في XAML أو التعليمات البرمجية الخلفية على SplitButton
...
ولكن، كل من Items
وخصائص ItemsSource
يبدو أن تنشأ من ItemsControl
، وهي مشكلة لأن SplitButton
وتستمد بالفعل من Button
. لذلك أنا لست متأكدا ما يجب القيام به ... أي أفكار؟
المحلول
إذا كنت تسير في طريق الميراث، يجب أن تنبع من HeaderedItemsControl بدلا من ذلك، حيث يضع ControlTemplate الافتراضي محتوى رأس كما محتويات زر.
ونتيجة لذلك، يمكنك أيضا الحصول على مقتنيات / ItemsSource - الشيء الوحيد الذي لديك لوضع غير ControlTemplate بك
وأخيرا، النظر في تنفيذ جزء القائمة باعتبارها منبثقة بدلا من ContextMenu. في ContextMenu هي عنصر واجهة المستخدم لأغراض محددة (وجلبت عموما حتى مع بزر الماوس الأيمن). لمزيد من المعلومات، راجع ControlTemplate الافتراضية تحرير وسرد في aero.normalcolor.xaml.