Aracılığıyla paylaş


WindowsFormsHost Öğesi için Düzen Konusunda Dikkat Edilmesi Gereken Noktalar

Bu konuda, öğesinin WindowsFormsHost WPF düzen sistemiyle nasıl etkileşime geçtiğini açıklar.

WPF ve Windows Forms, form veya sayfadaki öğeleri boyutlandırmak ve konumlandırmak için farklı ama benzer mantıkları destekler. WPF'de Windows Forms denetimlerini barındıran bir karma kullanıcı arabirimi (UI) oluşturduğunuzda, WindowsFormsHost öğesi iki düzen düzenini tümleştirir.

WPF ile Windows Forms Arasındaki Düzen Farklılıkları

WPF, çözümden bağımsız düzen kullanır. Tüm WPF düzen boyutları cihazdan bağımsız pikseller kullanılarak belirtilir. Cihazdan bağımsız piksel boyutu ve çözünürlüğü bağımsız bir inçin doksan altıncısı olduğundan, 72 dpi monitöre veya 19.200 dpi yazıcıya işlemeden bağımsız olarak benzer sonuçlar elde edersiniz.

WPF de dinamik düzeni temel alır. Bu, ui öğesinin kendisini içeriğe, üst düzen kapsayıcısına ve kullanılabilir ekran boyutuna göre bir form veya sayfada yerleştirdiğini gösterir. Dinamik düzen, içerdiği dizelerin uzunluğu değiştiğinde kullanıcı arabirimi öğelerinin boyutunu ve konumunu otomatik olarak ayarlayarak yerelleştirmeyi kolaylaştırır.

Windows Forms'daki düzen cihaza bağımlıdır ve statik olma olasılığı daha yüksektir. Genellikle, Windows Forms denetimleri donanım piksellerinde belirtilen boyutlar kullanılarak kesinlikle bir forma yerleştirilir. Ancak, Windows Forms aşağıdaki tabloda özetlenen bazı dinamik düzen özelliklerini destekler.

Düzen özelliği Tanım
Otomatikleştirme Bazı Windows Forms denetimleri, içeriklerini düzgün görüntülemek için kendilerini yeniden boyutlandırır. Daha fazla bilgi için bkz . OtomatikLeştirme Özelliğine Genel Bakış.
Sabitleme ve yerleştirme Windows Forms denetimleri, üst kapsayıcıya göre konumlandırmayı ve boyutlandırmayı destekler. Daha fazla bilgi için bkz. Control.Anchor ve Control.Dock.
Otomatik ölçeklendirme Kapsayıcı denetimleri, çıkış cihazının çözünürlüğüne veya varsayılan kapsayıcı yazı tipinin piksel cinsinden boyutuna göre kendilerini ve alt öğelerini yeniden boyutlandırır. Daha fazla bilgi için bkz . Windows Forms'da Otomatik Ölçeklendirme.
Düzen kapsayıcıları FlowLayoutPanel ve TableLayoutPanel denetimleri, alt denetimlerini düzenler ve içeriklerine göre kendilerini boyutlandırır.

Düzen Sınırlamaları

Genel olarak, Windows Forms denetimleri WPF'de mümkün olan ölçüde ölçeklendirilemez ve dönüştürülemez. Aşağıdaki listede, öğesi barındırılan WindowsFormsHost Windows Forms denetimini WPF düzen sistemiyle tümleştirmeye çalıştığında bilinen sınırlamalar açıklanmaktadır.

  • Bazı durumlarda, Windows Forms denetimleri yeniden boyutlandırılamaz veya yalnızca belirli boyutlara boyutlandırılabilir. Örneğin, Windows Forms ComboBox denetimi yalnızca denetimin yazı tipi boyutu tarafından tanımlanan tek bir yüksekliği destekler. Öğelerin dikey olarak esnetilebildiği WPF dinamik düzeninde barındırılan ComboBox denetim beklendiği gibi esnemez.

  • Windows Forms denetimleri döndürülemez veya çarpıtılamaz. WindowsFormsHost Bir eğme veya döndürme dönüşümü uygularsanız öğesi olayı tetiklerLayoutError. Olayı işlemezseniz LayoutError , bir InvalidOperationException oluşturulur.

  • Çoğu durumda, Windows Forms denetimleri orantılı ölçeklendirmeyi desteklemez. Denetimin genel boyutları ölçeklendirilse de, alt denetimler ve denetimin bileşen öğeleri beklendiği gibi yeniden boyutlandırılamayabilir. Bu sınırlama, her Windows Forms denetiminin ölçeklendirmeyi ne kadar iyi desteklediğine bağlıdır. Ayrıca, Windows Forms denetimlerini 0 piksel boyutuna indiremezsiniz.

  • Windows Forms denetimleri, formun kendisini ve denetimlerini yazı tipi boyutuna göre otomatik olarak yeniden boyutlandıracağı otomatik ölçeklendirmeyi destekler. WPF kullanıcı arabiriminde yazı tipi boyutunu değiştirmek düzenin tamamını yeniden boyutlandırmaz, ancak tek tek öğeler dinamik olarak yeniden boyutlandırılabilir.

Z-düzeni

WPF kullanıcı arabiriminde, çakışan davranışı denetlemek için öğelerin z sırasını değiştirebilirsiniz. Barındırılan Bir Windows Forms denetimi ayrı bir HWND içinde çizilir, bu nedenle her zaman WPF öğelerinin üzerine çizilir.

Barındırılan Bir Windows Forms denetimi de tüm Adorner öğelerin üzerine çizilir.

Düzen Davranışı

Aşağıdaki bölümlerde, WPF'de Windows Forms denetimleri barındırırken düzen davranışının belirli yönleri açıklanmaktadır.

Ölçeklendirme, Birim Dönüştürme ve Cihaz Bağımsızlığı

WindowsFormsHost öğesi WPF ve Windows Forms boyutlarını içeren işlemler gerçekleştirildiğinde iki koordinat sistemi söz konusu olur: WPF için cihazdan bağımsız pikseller ve Windows Forms için donanım pikselleri. Bu nedenle, tutarlı bir düzen elde etmek için uygun birim ve ölçeklendirme dönüştürmeleri uygulamanız gerekir.

Koordinat sistemleri arasındaki dönüştürme, geçerli cihaz çözünürlüğüne ve öğeye veya üst öğelerine WindowsFormsHost uygulanan tüm düzen veya işleme dönüşümlerine bağlıdır.

Çıkış cihazı 96 dpi ise ve öğeye ölçeklendirme uygulanmadıysa, cihazdan WindowsFormsHost bağımsız bir piksel bir donanım pikseline eşittir.

Diğer tüm durumlarda koordinat sistemi ölçeklendirmesi gerekir. Barındırılan denetim yeniden boyutlandırılmaz. Bunun yerine, öğesi barındırılan WindowsFormsHost denetimi ve tüm alt denetimlerini ölçeklendirmeyi dener. Windows Forms ölçeklendirmeyi WindowsFormsHost tam olarak desteklemediğinden, öğe belirli denetimler tarafından desteklenen dereceye ölçeklendirilir.

Barındırılan ScaleChild Windows Forms denetimi için özel ölçeklendirme davranışı sağlamak için yöntemini geçersiz kılın.

Öğe ölçeklendirmeye ek olarak, WindowsFormsHost yuvarlama ve taşma durumlarını aşağıdaki tabloda açıklandığı gibi işler.

Dönüştürme sorunu Tanım
Yuvarlama WPF cihazdan bağımsız piksel boyutları olarak doubleve Windows Forms donanım piksel boyutları olarak intbelirtilir. Tabanlı boyutların tabanlı boyutlara intdönüştürüldüğü durumlardadouble, WindowsFormsHost öğe standart yuvarlama kullanır, böylece 0,5'ten küçük kesirli değerler 0'a yuvarlanır.
Taşma WindowsFormsHost öğesi değerlerden double değerlere dönüştürdüğünde taşma int mümkündür. değerinden büyük MaxValue değerler olarak MaxValueayarlanır.

Windows Forms denetimlerinde ve WPF öğelerinde düzen davranışını denetleen özellikler, öğesi tarafından WindowsFormsHost uygun şekilde eşlenir. Daha fazla bilgi için bkz . Windows Forms ve WPF Özellik Eşlemesi.

Barındırılan Denetimdeki Düzen Değişiklikleri

Barındırılan Windows Forms denetimindeki düzen değişiklikleri, düzen güncelleştirmelerini tetikleme amacıyla WPF'ye yayılır. üzerindeki InvalidateMeasureWindowsFormsHost yöntemi, barındırılan denetimdeki düzen değişikliklerinin WPF düzen altyapısının çalışmasına neden olmasını sağlar.

Sürekli Boyutlandırılmış Windows Forms Denetimleri

Sürekli ölçeklendirmeyi destekleyen Windows Forms denetimleri WPF düzen sistemiyle tam olarak etkileşim kurar. öğesi, WindowsFormsHost barındırılan MeasureOverrideArrangeOverride Windows Forms denetimini boyutlandırmak ve düzenlemek için ve yöntemlerini her zamanki gibi kullanır.

Boyutlandırma Algoritması

öğesi barındırılan WindowsFormsHost denetimi boyutlandırmak için aşağıdaki yordamı kullanır:

  1. WindowsFormsHost öğesi ve ArrangeOverride yöntemlerini geçersiz kılarMeasureOverride.

  2. Barındırılan denetimin boyutunu belirlemek için yöntemi, MeasureOverride barındırılan denetimin GetPreferredSize yöntemini, yöntemine MeasureOverride geçirilen kısıtlamadan çevrilmiş bir kısıtlamayla çağırır.

  3. yöntemi, ArrangeOverride barındırılan denetimi verilen boyut kısıtlamasına ayarlamaya çalışır.

  4. Barındırılan denetimin Size özelliği belirtilen kısıtlamayla eşleşiyorsa, barındırılan denetim kısıtlamaya göre boyutlandırılır.

Size Özellik belirtilen kısıtlamayla eşleşmiyorsa, barındırılan denetim sürekli boyutlandırmayı desteklemez. Örneğin, MonthCalendar denetim yalnızca ayrık boyutlara izin verir. Bu denetim için izin verilen boyutlar, hem yükseklik hem de genişlik için tamsayılardan (ay sayısını temsil eder) oluşur. Böyle durumlarda, WindowsFormsHost öğesi aşağıdaki gibi davranır:

  • özelliği belirtilen Size kısıtlamadan daha büyük bir boyut döndürürse, öğesi barındırılan WindowsFormsHost denetimi klipler. Yükseklik ve genişlik ayrı ayrı işlenir, bu nedenle barındırılan denetim her iki yönde de kırpılabilir.

  • Özelliği belirtilen Size kısıtlamadan daha küçük bir boyut döndürürse, WindowsFormsHost bu boyut değerini kabul eder ve değeri WPF düzen sistemine döndürür.

Ayrıca bkz.