سؤال

أنا أعلن بنجاح قالب بيانات في رمز ما يلي:

    private static DataTemplate CreateTemplate(string sortMemberPath, HorizontalAlignment horzAlignment)
    {
        const string xamlFormat
            =
            "<DataTemplate xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" >"
            + "<StackPanel > "
            + "  <TextBlock Margin=\"2,0\" VerticalAlignment=\"Center\"  HorizontalAlignment=\"_HALIGNMENT_\"  "
            +
            "              Text=\"hello there\">   "
            + "  </TextBlock> "
            + "</StackPanel>"
            + "</DataTemplate>";

        return (DataTemplate) XamlReader.Load(xamlReturned);
    }

لكن الآن أريد إضافة معالج تم تغيير حجمه عن طريق تغيير الخط:

            + "<StackPanel > "

ل

            + "<StackPanel  SizeChanged="SizeChangedHandler" > "

لدي طريقة "sizechangedhandler" التي تم إعلانها في الكود وراء. ينتج عن هذا خطأ في تحليل XAML عندما يحاول عنصر التحكم تحميله في وقت التشغيل. أظن أنه لا يمكن العثور على معالج "SizechangedHandler". كيف يمكنني تحديد هذا المعالج بحيث يكون محلل XAML سعيدًا.

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

المحلول

يمكنك تجربة شيء مثل:

  dataTemplate.VisualTree.AddHandler(StackPanel.SizeChangedEvent, new SizeChangedEventHandler(SizeChangedHandler));

تعديل:

حسنًا ، بالنسبة لـ Silverlight ، يمكنك تجربتك مع loadContent طريقة datatemplate التي تعود و uilement التي يمكنك atach في هذا الحدث. آسف ، ليس لدي VS على استعداد للاختبار ومعرفة ما إذا كان يعمل ATM.

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