Mapowanie właściwości Windows Forms i WPF

Technologie Windows Forms i WPF mają dwa podobne, ale różne modele właściwości. Mapowanie właściwości obsługuje współdziałanie między dwiema architekturami i zapewnia następujące możliwości:

  • Ułatwia mapowanie odpowiednich zmian właściwości w środowisku hosta na hostowaną kontrolkę lub element.

  • Zapewnia domyślną obsługę mapowania najczęściej używanych właściwości.

  • Umożliwia łatwe usuwanie, zastępowanie lub rozszerzanie właściwości domyślnych.

  • Zapewnia, że zmiany wartości właściwości na hoście są automatycznie wykrywane i tłumaczone na hostowaną kontrolkę lub element.

Uwaga

Zdarzenia zmiany właściwości nie są propagowane do hierarchii formantu hostingu ani elementów. Tłumaczenie właściwości nie jest wykonywane, jeśli wartość lokalna właściwości nie zmienia się z powodu ustawienia bezpośredniego, stylów, dziedziczenia, powiązania danych lub innych mechanizmów, które zmieniają wartość właściwości.

PropertyMap Użyj właściwości w elemecie WindowsFormsHost i właściwości na ElementHost kontrolcePropertyMap, aby uzyskać dostęp do mapowania właściwości.

Mapowanie właściwości za pomocą elementu WindowsFormsHost

Element WindowsFormsHost tłumaczy domyślne właściwości WPF na ich odpowiedniki windows Forms przy użyciu poniższej tabeli tłumaczenia.

Hostowanie programu Windows Presentation Foundation Windows Forms Zachowanie współdziałania
Background

(System.Windows.Media.Brush)
BackColor

(System.Drawing.Color)
Element WindowsFormsHost ustawia BackColor właściwość hostowanej kontrolki i BackgroundImage właściwość hostowanej kontrolki. Mapowanie jest wykonywane przy użyciu następujących reguł:

— Jeśli Background jest kolorem stałym, jest konwertowany i używany do ustawiania BackColor właściwości hostowanej kontrolki. Właściwość BackColor nie jest ustawiona na hostowanej kontrolce, ponieważ hostowana kontrolka może dziedziczyć wartość BackColor właściwości. Uwaga: hostowana kontrolka nie obsługuje przezroczystości. Każdy kolor przypisany do BackColor musi być w pełni nieprzezroczystym, z wartością alfa 0xFF.

— Jeśli Background nie jest kolorem stałym, kontrolka WindowsFormsHost tworzy mapę bitową na podstawie Background właściwości . Kontrolka WindowsFormsHost przypisuje tę mapę bitową do BackgroundImage właściwości hostowanej kontrolki. Zapewnia to efekt podobny do przezroczystości. Uwaga: to zachowanie można zastąpić lub usunąć Background mapowanie właściwości.
Cursor Cursor Jeśli domyślne mapowanie nie zostało ponownie przydzielone, WindowsFormsHost kontrolka przechodzi przez hierarchię przodków do momentu znalezienia obiektu nadrzędnego z ustawionym właściwością Cursor . Ta wartość jest tłumaczona na najbliższy odpowiedni kursor Windows Forms.

Jeśli domyślne mapowanie ForceCursor właściwości nie zostało ponownie przydzielone, przechodzenie zatrzymuje się na pierwszym przodku z ustawioną wartością ForceCursortrue.
FlowDirection

(System.Windows.FlowDirection)
RightToLeft

(System.Windows.Forms.RightToLeft)
LeftToRight mapuje na No.

RightToLeft mapuje na Yes.

Inherit nie jest mapowany.

FlowDirection.RightToLeft mapuje na RightToLeft.Yes.
FontStyle Style w kontrolce hostowanej System.Drawing.Font Zestaw właściwości WPF jest tłumaczony na odpowiadający element Font. Gdy jedna z tych właściwości ulegnie zmianie, zostanie utworzona nowa Font . W przypadku Normalelementu : Italic jest wyłączona. Dla Italic elementu lub Oblique: Italic jest włączona.
FontWeight Style w kontrolce hostowanej System.Drawing.Font Zestaw właściwości WPF jest tłumaczony na odpowiadający element Font. Gdy jedna z tych właściwości ulegnie zmianie, zostanie utworzona nowa Font . W przypadku Black, Bold, ExtraBoldHeavyMediumDemiBold, SemiBoldlub UltraBold: Bold jest włączona. W przypadku ExtraLightparametrów , Light, , NormalRegular, Thinlub UltraLight: Bold jest wyłączona.
FontFamily

FontSize

FontStretch

FontStyle

FontWeight
Font

(System.Drawing.Font)
Zestaw właściwości WPF jest tłumaczony na odpowiadający element Font. Gdy jedna z tych właściwości ulegnie zmianie, zostanie utworzona nowa Font . Rozmiar hostowanej kontrolki Formularze systemu Windows zmienia się na podstawie rozmiaru czcionki.

Rozmiar czcionki w WPF jest wyrażony jako jeden dziewięćdziesiąt szósty cala, a w formularzach Windows Forms jako jeden siedemdziesiąt sekundy cala. Odpowiednia konwersja to:

Rozmiar czcionki formularzy systemu Windows = rozmiar czcionki WPF * 72.0 / 96.0.
Foreground

(System.Windows.Media.Brush)
ForeColor

(System.Drawing.Color)
Mapowanie Foreground właściwości jest wykonywane przy użyciu następujących reguł:

- Jeśli Foreground jest elementem SolidColorBrush, użyj polecenia Color .ForeColor
- Jeśli Foreground jest wartością GradientBrush, użyj koloru elementu GradientStop z najniższą wartością przesunięcia dla elementu ForeColor.
- W przypadku dowolnego innego Brush typu pozostaw ForeColor niezmienione. Oznacza to, że jest używana wartość domyślna.
IsEnabled Enabled Po IsEnabled ustawieniu WindowsFormsHost element ustawia Enabled właściwość w hostowanej kontrolce.
Padding Padding Wszystkie cztery wartości właściwości w Padding hostowanej kontrolce Windows Forms są ustawione na tę samą Thickness wartość.

- Wartości większe niż MaxValue są ustawione na MaxValue.
- Wartości mniejsze niż MinValue są ustawione na MinValue.
Visibility Visible - Visible mapuje na Visible = true. Hostowana kontrolka Windows Forms jest widoczna. Jawne ustawienie Visible właściwości w hostowanej kontrolce false na wartość nie jest zalecane.
- Collapsedmapuje na Visible = true lub .false Hostowana kontrolka Windows Forms nie jest rysowana, a jej obszar jest zwinięty.
- Hidden : Hostowana kontrolka Formularze systemu Windows zajmuje miejsce w układzie, ale nie jest widoczna. W tym przypadku właściwość jest ustawiona Visible na truewartość . Jawne ustawienie Visible właściwości w hostowanej kontrolce false na wartość nie jest zalecane.

Dołączone właściwości elementów kontenera WindowsFormsHost są w pełni obsługiwane przez element .

Aby uzyskać więcej informacji, zobacz Przewodnik: mapowanie właściwości przy użyciu elementu WindowsFormsHost.

Aktualizacje do właściwości nadrzędnych

Zmiany w większości właściwości nadrzędnych powodują powiadomienia o hostowanej kontrolce podrzędnej. Na poniższej liście opisano właściwości, które nie powodują powiadomień, gdy ich wartości się zmieniają.

Jeśli na przykład zmienisz wartość Background właściwości WindowsFormsHost elementu, BackColor właściwość hostowanej kontrolki nie ulegnie zmianie.

Mapowanie właściwości za pomocą kontrolki ElementHost

Poniższe właściwości zapewniają wbudowane powiadomienie o zmianie. Nie należy wywoływać OnPropertyChanged metody podczas mapowania tych właściwości:

  • AutoSize

  • Backcolor

  • Backgroundimage

  • Backgroundimagelayout

  • Bindingcontext

  • Causesvalidation

  • ContextMenu

  • ContextMenuStrip

  • Kursor

  • Dock

  • Włączony

  • Czcionka

  • Forecolor

  • Lokalizacja

  • Margin

  • Dopełnienie

  • Parent

  • Region

  • RightToLeft

  • Size

  • TabIndex

  • Tabstop

  • Tekst

  • Widoczna

Kontrolka ElementHost tłumaczy domyślne właściwości formularzy systemu Windows na ich odpowiedniki WPF przy użyciu poniższej tabeli tłumaczenia.

Aby uzyskać więcej informacji, zobacz Przewodnik: mapowanie właściwości przy użyciu kontrolki ElementHost.

Hosting formularzy systemu Windows Windows Presentation Foundation Zachowanie współdziałania
BackColor

(System.Drawing.Color)
Background

(System.Windows.Media.Brush) w elemecie hostowanym
Ustawienie tej właściwości wymusza przemalowanie za pomocą elementu ImageBrush. BackColorTransparent Jeśli właściwość jest ustawiona na false (wartość domyślna), jest to ImageBrush oparte na wyglądzie ElementHost kontrolki, w tym jej BackColor, BackgroundImageBackgroundImageLayout właściwości i wszystkich dołączonych programów obsługi farby.

BackColorTransparent Jeśli właściwość jest ustawiona na true, ImageBrush element jest oparty na wyglądzie ElementHost elementu nadrzędnego kontrolki, w tym właściwości , BackgroundImageLayout , elementu nadrzędnego BackColorBackgroundImagei wszystkich dołączonych programów obsługi farby.
BackgroundImage

(System.Drawing.Image)
Background

(System.Windows.Media.Brush) w elemecie hostowanym
Ustawienie tej właściwości powoduje to samo zachowanie opisane dla BackColor mapowania.
BackgroundImageLayout Background

(System.Windows.Media.Brush) w elemecie hostowanym
Ustawienie tej właściwości powoduje to samo zachowanie opisane dla BackColor mapowania.
Cursor

(System.Windows.Forms.Cursor)
Cursor

(System.Windows.Input.Cursor)
Standardowy kursor formularzy systemu Windows jest tłumaczony na odpowiedni standardowy kursor WPF. Jeśli formularze systemu Windows nie są standardowym kursorem, zostanie przypisana wartość domyślna.
Enabled IsEnabled Po Enabled ustawieniu kontrolka ElementHost ustawia IsEnabled właściwość na hostowanym elemecie.
Font

(System.Drawing.Font)
FontFamily

FontSize

FontStretch

FontStyle

FontWeight
Wartość Font jest tłumaczona na odpowiedni zestaw właściwości czcionki WPF.
Bold FontWeight w elemecie hostowanym Jeśli Bold parametr ma truewartość , FontWeight ma wartość Bold.

Jeśli Bold parametr ma falsewartość , FontWeight ma wartość Normal.
Italic FontStyle w elemecie hostowanym Jeśli Italic parametr ma truewartość , FontStyle ma wartość Italic.

Jeśli Italic parametr ma falsewartość , FontStyle ma wartość Normal.
Strikeout TextDecorations w elemecie hostowanym Dotyczy tylko w przypadku hostowania kontrolki TextBlock .
Underline TextDecorations w elemecie hostowanym Dotyczy tylko w przypadku hostowania kontrolki TextBlock .
RightToLeft

(System.Windows.Forms.RightToLeft)
FlowDirection

(FlowDirection)
No mapuje na LeftToRight.

Yes mapuje na RightToLeft.
Visible Visibility Kontrolka ElementHost ustawia Visibility właściwość elementu hostowanego przy użyciu następujących reguł:

- Visible = true mapuje na Visible.
- Visible = false mapuje na Hidden.

Zobacz też