Eto: أسئلة حول النقل إلى Eto

تم إنشاؤها على ١٦ يونيو ٢٠١٧  ·  5تعليقات  ·  مصدر: picoe/Eto

أهلا!

أقوم بنقل برنامجي إلى إطار عمل Eto وأثناء نقل الواجهة وتصحيحها لدي الأسئلة التالية:

  1. هل هناك طريقة لتعطيل تحجيم الصور في الأزرار (الزر) ولماذا يتم تمكينه افتراضيًا؟

  2. لماذا عندما يكون الزر مضبوطًا على ممكّن = خطأ ، ويصبح الزر شاحبًا ، ويظل الرمز ساطعًا؟ كيف يمكن إصلاح ذلك (وضع WPF)؟

  3. لماذا في وضع WinForms ، لا تتناسب أزرار شريط الأدوات مع حجم الصور - يتم إخراج حجم أقل للصورة الحقيقية؟ لهذا السبب ، تكون الصور أقل من الحجم الفعلي وضبابية.

  4. لماذا لا توجد أشرطة حالة على الإطلاق وما هي الخيارات المتاحة لاستبدالها ، إذا كانت هناك حاجة فعلاً لها (لوحة + ملصقات؟).

  5. كيف يتم تنفيذ CustomControl بشكل صحيح والذي يجب أن يوحِّد الخصائص القابلة للرسم والمكونات القابلة للتمرير؟ لقد حاولت أن أجعلها هجينة ، لكنها لم تنجح. هل سيتم دمج Drawable في Scrollable؟ أو هناك حل أفضل؟

  6. هل هناك طريقة لتعيين محاذاة القيم في أعمدة GridView؟

  7. كيف يمكنني الحصول على نافذة التطبيق النشطة الحالية (إذا كانت هناك عدة نوافذ وثيقة SDI متساوية في الحقوق)؟

  8. هل تخطط لإنشاء محرك مثل NUnitForms في المستقبل - لاختبار تطبيقات واجهة المستخدم؟

  9. في وضع WPF ، إذا لم يتم تعيين ClientSize لمربع الحوار ، فسيتم محاذاة كل شيء تمامًا مع التخطيط المحدد ، ويأخذ مربع الحوار حجمًا جيدًا. ومع ذلك ، في وضع WinForms ، يتضح أن مربع الحوار صغير وأن المكونات لا تصطف بشكل صحيح. WinForms - مدعومة كمنصة؟

هل يمكنك مساعدتي؟

التعليق الأكثر فائدة

مهلا،

أعتقد أنه يجب عليك فتح قضايا منفصلة لكل مشكلة من مشاكلك ، ولا يمكنني الإجابة إلا على بضع نقاط من مشكلتك.
لا تهدف Eto إلى التصرف بنفس الطريقة على جميع المنصات (كما قال cwensley في بعض القضايا التي أثيرت) ، الهدف الرئيسي هو البحث والتصرف بشكل أصلي على كل منصة ، وهذا هو السبب الرئيسي لمشاكلك. يمكنك حل بعضها باستخدام التصميم

  1. هذا قابل للحل باستخدام التصميم
  2. أعتقد أن هذا مرتبط بهذه المشكلة وأعتقد أنه قابل للحل من خلال التصميم.
  3. لأنه سلوك WinForms الافتراضي (بقدر ما أتذكر عند العمل مع winforms) قابل للحل عن طريق التصميم
  4. ليست كل الأنظمة الأساسية لديها / تدعم شريط الحالة ، إذا كنت بحاجة إلى واحد ، كما قلت ، أقوم بعمل تخطيط مكدس مع عناصر فيه.
  5. لماذا لا تضع فقط Drawable إلى Scrollable Layout وتجعل التحكم في Drawable كبيرًا كما تريد؟
  6. يحتوي TextBoxCell على خاصية تسمى TextAlignment و VerticalAlignment:
    C# new GridColumn() { HeaderText = header, DataCell = new TextBoxCell() { Binding = binding, TextAlignment = TextAlignment.Center, VerticalAlignment = VerticalAlignment.Center }, };
  7. لديك بالفعل إجابة عن ذلك

ال 5 كومينتر

مهلا،

أعتقد أنه يجب عليك فتح قضايا منفصلة لكل مشكلة من مشاكلك ، ولا يمكنني الإجابة إلا على بضع نقاط من مشكلتك.
لا تهدف Eto إلى التصرف بنفس الطريقة على جميع المنصات (كما قال cwensley في بعض القضايا التي أثيرت) ، الهدف الرئيسي هو البحث والتصرف بشكل أصلي على كل منصة ، وهذا هو السبب الرئيسي لمشاكلك. يمكنك حل بعضها باستخدام التصميم

  1. هذا قابل للحل باستخدام التصميم
  2. أعتقد أن هذا مرتبط بهذه المشكلة وأعتقد أنه قابل للحل من خلال التصميم.
  3. لأنه سلوك WinForms الافتراضي (بقدر ما أتذكر عند العمل مع winforms) قابل للحل عن طريق التصميم
  4. ليست كل الأنظمة الأساسية لديها / تدعم شريط الحالة ، إذا كنت بحاجة إلى واحد ، كما قلت ، أقوم بعمل تخطيط مكدس مع عناصر فيه.
  5. لماذا لا تضع فقط Drawable إلى Scrollable Layout وتجعل التحكم في Drawable كبيرًا كما تريد؟
  6. يحتوي TextBoxCell على خاصية تسمى TextAlignment و VerticalAlignment:
    C# new GridColumn() { HeaderText = header, DataCell = new TextBoxCell() { Binding = binding, TextAlignment = TextAlignment.Center, VerticalAlignment = VerticalAlignment.Center }, };
  7. لديك بالفعل إجابة عن ذلك

أشعر بالحرج لسؤالي ولكنني غير قادر على حل "هل هناك طريقة لتعطيل تحجيم الصور في الأزرار (الزر) ولماذا يتم تمكينه افتراضيًا؟" باستخدام الأنماط كما اقترحهSlowLogicBoy.
أبعد ما استطعت أن أقطعه هو:

Style.Add<Eto.Wpf.Forms.Controls.ButtonHandler>(null, handler => ?????? ));

هل يمكنك تقديم مثال على كيفية القيام بذلك؟
شكرا

لست على دراية بـ wpf ، لذلك هذا ما يمكنني تقديمه لك:

using swc = System.Windows.Controls;

Style.Add<Eto.Wpf.Forms.Controls.ButtonHandler>(null, handler => {
    var grid = handler.Control.Content as swc.Grid;
    if(grid == null) return; //Something in ButtonHandler changed

    var imageCtrl = grid.GetChildOfType<swc.Image>().SingleOrDefault();
    if(imageCtrl == null) return; //Something in ButtonHandler changed

    //TODO: Stuff with imageCtrl
});

static IEnumerable<T> GetChildOfType<T>(this swc.Grid self)
{
    foreach (var item in self.Children)
    {
        if(item is T ctrl)
            yield return ctrl;
    }
}

كيف يتم إنشاء زر Eto لـ wpf

شكرًا لك SlowLogicBoy ، يعد الرمز الخاص بك بالتأكيد نقطة انطلاق جيدة للوصول إلى زر Wpf ، وسأحاول المتابعة ومعرفة كيفية تعطيل القياس بنفسي :)

بالنسبة للسجلات ، يقوم المقتطف التالي بالمهمة:

Style.Add<Eto.Wpf.Forms.Controls.ButtonHandler>(null, handler =>
{
    var grid = handler.Control.Content as swc.Grid;
    if (grid == null)
        return;
    var image = grid.Children.OfType<swc.Image>().FirstOrDefault();
    if (image == null)
        return;
    image.Stretch = System.Windows.Media.Stretch.None;
});

شكرا SlowLogicBoy لمساعدته

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

canton7 picture canton7  ·  22تعليقات

LaraSQP picture LaraSQP  ·  7تعليقات

katatunix picture katatunix  ·  12تعليقات

Sanae6 picture Sanae6  ·  4تعليقات

jzlhll picture jzlhll  ·  14تعليقات