Udostępnij za pośrednictwem


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.

Notatka

Zdarzenia zmiany właściwości nie są propagowane w górę hierarchii kontrolki hostującej lub 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.

Użyj właściwości PropertyMap elementu WindowsFormsHost i właściwości PropertyMap w kontrolce ElementHost, 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 Formularze systemu Windows Zachowanie współdziałania
Background

(System.Windows.Media.Brush)
BackColor

(System.Drawing.Color)
Element WindowsFormsHost ustawia właściwość BackColor hostowanej kontrolki i właściwość BackgroundImage 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 właściwości BackColor hostowanej kontrolki. Właściwość BackColor nie jest ustawiona na hostowanej kontrolce, ponieważ hostowana kontrolka może dziedziczyć wartość właściwości BackColor. 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ą z właściwości Background. Kontrolka WindowsFormsHost przypisuje tę mapę bitową do właściwości BackgroundImage hostowanej kontrolki. Zapewnia to efekt podobny do przezroczystości. Uwaga: Możesz zastąpić to zachowanie lub usunąć mapowanie właściwości Background.
Cursor Cursor Jeśli domyślne mapowanie nie zostało ponownie przydzielone, WindowsFormsHost kontrolka przeszukuje hierarchię przodków, dopóki nie znajdzie obiektu nadrzędnego z właściwością Cursor. Ta wartość jest przekładana na najbliższy odpowiedni kursor Windows Forms.

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

(System.Windows.FlowDirection)
RightToLeft

(System.Windows.Forms.RightToLeft)
LeftToRight przypisuje się do No.

RightToLeft odnosi się do Yes.

Inherit nie jest mapowany.

FlowDirection.RightToLeft mapuje na RightToLeft.Yes.
FontStyle Style na hostowanej kontrolce System.Drawing.Font Zestaw właściwości WPF jest tłumaczony na odpowiadający Font. Po zmianie jednej z tych właściwości zostanie utworzona nowa Font. W przypadku Normal: Italic jest wyłączona. W przypadku Italic lub Oblique: Italic jest włączona.
FontWeight Style na hostowanej kontrolce System.Drawing.Font Zestaw właściwości WPF jest tłumaczony na odpowiadający Font. Po zmianie jednej z tych właściwości zostanie utworzona nowa Font. W przypadku Black, Bold, DemiBold, ExtraBold, Heavy, Medium, SemiBoldlub UltraBold: Bold jest włączone. W przypadku ExtraLightLight, Normal, Regular, 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 Font. Po zmianie jednej z tych właściwości zostanie utworzona nowa Font. Rozmiar kontrolki systemu Windows Forms zmienia się w zależności od wielkości 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 właściwości Foreground jest wykonywane przy użyciu następujących reguł:

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

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

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

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

Aktualizacje właściwości nadrzędnych

Zmiany w większości właściwości elementów nadrzędnych powodują powiadomienia w 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ść właściwości Background elementu WindowsFormsHost, właściwość BackColor 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ć metody OnPropertyChanged podczas mapowania tych właściwości:

  • Automatyczne dopasowanie rozmiaru

  • Kolor tła

  • BackgroundImage

  • BackgroundImageLayout

  • BindingContext

  • PowodujeWalidację

  • menu kontekstowe

  • ContextMenuStrip (menu kontekstowe)

  • Kursor

  • Dok

  • Włączone

  • Czcionka

  • ForeColor

  • Lokalizacja

  • Margines

  • Dopełnienie

  • Rodzic

  • Region

  • PrawaDoLewej

  • Rozmiar

  • TabIndex

  • Tabstop

  • Tekst

  • Widoczny

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ą ImageBrush. Jeśli właściwość BackColorTransparent jest ustawiona na false (wartość domyślna), ta ImageBrush jest oparta na wyglądzie kontrolki ElementHost, w tym jej BackColor, BackgroundImage, właściwości BackgroundImageLayout i wszystkich dołączonych procedur malowania.

Jeśli właściwość BackColorTransparent jest ustawiona na true, ImageBrush jest oparta na wyglądzie elementu nadrzędnego kontrolki ElementHost, w tym na właściwościach BackColor, BackgroundImage, BackgroundImageLayout elementu nadrzędnego oraz wszelkich dołączonych uchwytach malowania.
BackgroundImage

(System.Drawing.Image)
Background

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

(System.Windows.Media.Brush) w elemecie hostowanym
Ustawienie tej właściwości powoduje to samo zachowanie opisane dla mapowania BackColor.
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 Windows Forms nie jest standardowym kursorem, zostanie przypisana wartość domyślna.
Enabled IsEnabled Po ustawieniu Enabled kontrolka ElementHost ustawia właściwość IsEnabled elementu hostowanego.
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 elemencie hostowanym Jeśli Bold jest true, FontWeight jest ustawiona na wartość Bold.

Jeśli Bold jest false, FontWeight jest ustawiona na wartość Normal.
Italic FontStyle w elemecie hostowanym Jeśli Italic jest true, FontStyle jest ustawiona na wartość Italic.

Jeśli Italic jest false, FontStyle jest ustawiona na wartość Normal.
Strikeout TextDecorations w elemencie hostowanym Ma zastosowanie tylko w przypadku hostowania kontrolki TextBlock.
Underline TextDecorations w elemencie hostowanym Ma zastosowanie 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 właściwość Visibility elementu hostowanego przy użyciu następujących reguł:

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

Zobacz też