Eto: Pertanyaan tentang porting ke Eto

Dibuat pada 16 Jun 2017  ·  5Komentar  ·  Sumber: picoe/Eto

Halo!

Saya mem-porting program saya ke kerangka kerja Eto dan selama porting dan debugging antarmuka saya memiliki pertanyaan-pertanyaan berikut:

  1. Apakah ada cara untuk menonaktifkan penskalaan gambar di tombol (Tombol) dan mengapa ini diaktifkan secara default?

  2. Mengapa ketika tombol disetel ke Enabled = false, tombol menjadi pucat, dan ikon tetap cerah? Bagaimana ini bisa diperbaiki (mode WPF)?

  3. Mengapa dalam mode WinForms tombol toolbar tidak menskalakan ke ukuran gambar - ukuran gambar kurang nyata adalah output? Karena itu, gambar lebih kecil dari ukuran sebenarnya dan buram.

  4. Mengapa sama sekali tidak ada bilah status dan apa opsi untuk menggantinya, jika benar-benar dibutuhkan (Panel + Label?).

  5. Seberapa benar mengimplementasikan CustomControl yang seharusnya menyatukan properti komponen Drawable dan Scrollable? Saya mencoba menjadikannya hibrida, tetapi tidak berhasil. Akankah Drawable bersarang di Scrollable? Atau ada solusi yang lebih baik?

  6. Apakah ada cara untuk mengatur perataan nilai di kolom GridView?

  7. Bagaimana saya bisa mendapatkan jendela aplikasi aktif saat ini (jika ada beberapa jendela dokumen SDI yang memiliki hak yang sama)?

  8. Apakah Anda berencana untuk membuat mesin seperti NUnitForms di masa mendatang - untuk menguji aplikasi UI?

  9. Dalam mode WPF, jika ClientSize tidak ditetapkan ke dialog, semuanya selaras sempurna dengan tata letak yang ditentukan, dan dialog itu sendiri membutuhkan ukuran yang baik. Namun, dalam mode WinForms, dialog menjadi kecil dan komponen tidak berbaris dengan benar. WinForms - didukung sebagai platform?

Bisakah kamu membantuku?

Komentar yang paling membantu

Hai,

Saya pikir Anda harus membuka masalah terpisah untuk setiap masalah Anda, saya hanya bisa menjawab beberapa poin Anda.
Eto tidak bertujuan untuk bertindak dengan cara yang sama di semua platform (seperti yang dikatakan @cwensley dalam beberapa masalah yang diangkat), tujuan utamanya adalah untuk terlihat dan bertindak asli di setiap platform, itulah alasan utama masalah Anda. Anda dapat menyelesaikan beberapa di antaranya dengan menggunakan Styling

  1. Ini bisa dipecahkan menggunakan Styling
  2. Saya pikir ini terkait dengan masalah ini dan saya pikir itu dapat dipecahkan dengan gaya.
  3. Karena itu adalah perilaku WinForms default (sejauh yang saya ingat ketika bekerja dengan winforms) dapat dipecahkan dengan gaya
  4. Tidak semua platform memiliki/mendukung StatusBar, jika saya memerlukannya, seperti yang Anda katakan, saya membuat tata letak bertumpuk dengan item di dalamnya.
  5. Mengapa Anda tidak menempatkan Drawable ke tata letak Scrollable dan membuat kontrol Drawable sebesar yang Anda inginkan?
  6. TextBoxCell memiliki properti yang disebut TextAlignment dan VerticalAlignment:
    C# new GridColumn() { HeaderText = header, DataCell = new TextBoxCell() { Binding = binding, TextAlignment = TextAlignment.Center, VerticalAlignment = VerticalAlignment.Center }, };
  7. Anda sudah memiliki jawaban untuk itu

Semua 5 komentar

Hai,

Saya pikir Anda harus membuka masalah terpisah untuk setiap masalah Anda, saya hanya bisa menjawab beberapa poin Anda.
Eto tidak bertujuan untuk bertindak dengan cara yang sama di semua platform (seperti yang dikatakan @cwensley dalam beberapa masalah yang diangkat), tujuan utamanya adalah untuk terlihat dan bertindak asli di setiap platform, itulah alasan utama masalah Anda. Anda dapat menyelesaikan beberapa di antaranya dengan menggunakan Styling

  1. Ini bisa dipecahkan menggunakan Styling
  2. Saya pikir ini terkait dengan masalah ini dan saya pikir itu dapat dipecahkan dengan gaya.
  3. Karena itu adalah perilaku WinForms default (sejauh yang saya ingat ketika bekerja dengan winforms) dapat dipecahkan dengan gaya
  4. Tidak semua platform memiliki/mendukung StatusBar, jika saya memerlukannya, seperti yang Anda katakan, saya membuat tata letak bertumpuk dengan item di dalamnya.
  5. Mengapa Anda tidak menempatkan Drawable ke tata letak Scrollable dan membuat kontrol Drawable sebesar yang Anda inginkan?
  6. TextBoxCell memiliki properti yang disebut TextAlignment dan VerticalAlignment:
    C# new GridColumn() { HeaderText = header, DataCell = new TextBoxCell() { Binding = binding, TextAlignment = TextAlignment.Center, VerticalAlignment = VerticalAlignment.Center }, };
  7. Anda sudah memiliki jawaban untuk itu

Saya malu untuk bertanya tetapi saya tidak dapat menyelesaikan "Apakah ada cara untuk menonaktifkan penskalaan gambar di tombol (Tombol) dan mengapa ini diaktifkan secara default?" dengan Gaya seperti yang disarankan oleh @SlowLogicBoy.
Jarak terjauh yang bisa saya tempuh adalah:

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

Bisakah Anda memberikan contoh bagaimana Anda melakukannya?
Terima kasih

Saya tidak terbiasa dengan wpf, jadi ini yang bisa saya berikan kepada Anda:

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;
    }
}

Bagaimana tombol Eto dibuat untuk wpf

Terima kasih @SlowLogicBoy , kode Anda jelas merupakan titik awal yang baik untuk mendapatkan akses ke Tombol Wpf, saya akan mencoba melanjutkan dan mencari tahu cara menonaktifkan penskalaan sendiri :)

Sebagai catatan, cuplikan berikut berfungsi:

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;
});

Terima kasih @SlowLogicBoy atas bantuannya

Apakah halaman ini membantu?
0 / 5 - 0 peringkat