كيفية الوصول إلى عنصر تحكم WPF تقع في ControlTemplate؟

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

  •  03-07-2019
  •  | 
  •  

سؤال

وعادة ما يتم الإعلان عن الضوابط WPF في ملفات .xaml وليس في التعليمات البرمجية خلف (.xaml.cs الملفات). ومع ذلك، في بعض الأحيان أنا بحاجة إلى استخدام بعض تلك الضوابط في التعليمات البرمجية خلف من أجل التلاعب بها. كيف يمكنني الحصول على المقبض لعنصر تحكم مثل إذا كان "يقيم" في ملف XAML؟

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

المحلول

يمكنك استخدام الأسلوب FindName () من الدرجة ControlTemplate.

// Finding the grid that is generated by the ControlTemplate of the Button
Grid gridInTemplate = (Grid)myButton1.Template.FindName("grid", myButton1);

نصائح أخرى

وأنا غير متأكد بشأن ما كنت طالبا، لذلك سأحاول والإجابة كلتا الحالتين أنني تفسير كما سؤالك.

1) إذا كنت تريد أن تعلن عنصر تحكم واضحة، ومن ثم تحريره مباشرة، كل ما عليك القيام به هو تعيين الخاصية اسم مثل هذا:

<Canvas x:Name="myCanvas"/>

وبعد ذلك يمكنك الوصول إلى قماش من خلال اسم هذا النحو:

myCanvas.Background = Brushes.Blue;

2) إذا كنت تبحث لإعلان السيطرة النوعية، ومن ثم استخدامها عدة مرات، يمكنك القيام بذلك مثل هذا:

<Window>
   <Window.Resources>
      <Ellipse x:Key="myEllipse" Height="10" Width="10">
   </Window.Resources>
</Window>

وبعد ذلك يمكنك الوصول إلى هذه السيطرة مسبقا باستخدام بناء الجملة هذا في التعليمات البرمجية:

Ellipse tempEllipse = (Ellipse)FindResource("MyEllipse");

إذا كنت تريد استخدام Resourse كنموذج لضوابط متعددة، إضافة س: المشتركة = "كاذبة"

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