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ą ForceCursor true . |
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 true wartość . 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 true wartość , FontWeight ma wartość Bold.Jeśli Bold parametr ma false wartość , FontWeight ma wartość Normal. |
Italic | FontStyle w elemecie hostowanym | Jeśli Italic parametr ma true wartość , FontStyle ma wartość Italic.Jeśli Italic parametr ma false wartość , 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ż
.NET Desktop feedback