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ż
.NET Desktop feedback