Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Aktualisiert: November 2007
Die ElementHost-Klasse ermöglicht es Ihnen, in Windows Forms ein Windows Presentation Foundation (WPF)-Steuerelement zu hosten. Wenn Sie das Steuerelement hosten, können Sie Ereignisse empfangen und auf die verfügbar gemachten Eigenschaften des Steuerelements zugreifen. Die einfachste Möglichkeit, ein WPF-Steuerelement zu hosten, besteht darin, ein Panel-Steuerelement zum Formular hinzuzufügen und dann das WPF-Steuerelement im Panel zu hosten. Dies geschieht in der Regel im Load-Ereignishandler des Formulars.
Im folgenden Codebeispiel wird veranschaulicht, wie das ElementHost-Steuerelement verwendet wird, um ein WPF-Steuerelement in Windows Forms zu hosten. Es zeigt auch, wie Handler an zwei der benutzerdefinierten OnButtonClick-Ereignisse des Steuerelements angefügt werden. Das vollständige Beispiel finden Sie unter Beispiel für das Hosten eines einfachen Windows Presentation Foundation-Steuerelements in Windows Forms.
Tipp
Das gehostete Steuerelement wird zum Zeitpunkt des Load-Ereignisses des Formulars nicht vollständig initialisiert. Das später eintretende Loaded-Ereignis des Steuerelements gibt an, dass das Steuerelement initialisiert wurde. Im Beispiel wird ein Handler an das Loaded-Ereignis des Steuerelements angefügt, da es die Anfangswerte von verschiedenen Eigenschaften abrufen muss, die zum Zeitpunkt des Load-Ereignisses des Formulars nicht definiert sind.
Beispiel
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows;
using System.Windows.Forms;
using System.Windows.Controls;
using System.Windows.Forms.Integration;
using System.Windows.Media;
namespace WFHost
{
partial class Form1 : Form
{
private ElementHost ctrlHost;
private MyControls.Page1 avAddressCtrl;
System.Windows.FontWeight initFontWeight;
double initFontSize;
System.Windows.FontStyle initFontStyle;
System.Windows.Media.SolidColorBrush initBackBrush;
System.Windows.Media.SolidColorBrush initForeBrush;
FontFamily initFontFamily;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
ctrlHost = new ElementHost();
ctrlHost.Dock = DockStyle.Fill;
panel1.Controls.Add(ctrlHost);
avAddressCtrl = new MyControls.Page1();
avAddressCtrl.InitializeComponent();
ctrlHost.Child = avAddressCtrl;
avAddressCtrl.OnButtonClick +=
new MyControls.Page1.MyControlEventHandler(
avAddressCtrl_OnButtonClick);
avAddressCtrl.Loaded += new RoutedEventHandler(
avAddressCtrl_Loaded);
}
void avAddressCtrl_Loaded(object sender, EventArgs e)
{
initBackBrush = (SolidColorBrush)avAddressCtrl.MyControl_Background;
initForeBrush = avAddressCtrl.MyControl_Foreground;
initFontFamily = avAddressCtrl.MyControl_FontFamily;
initFontSize = avAddressCtrl.MyControl_FontSize;
initFontWeight = avAddressCtrl.MyControl_FontWeight;
initFontStyle = avAddressCtrl.MyControl_FontStyle;
}
void avAddressCtrl_OnButtonClick(
object sender,
MyControls.MyControlEventArgs args)
{
if (args.IsOK)
{
lblAddress.Text = "Street Address: " + args.MyStreetAddress;
lblCity.Text = "City: " + args.MyCity;
lblName.Text = "Name: " + args.MyName;
lblState.Text = "State: " + args.MyState;
lblZip.Text = "Zip: " + args.MyZip;
}
else
{
lblAddress.Text = "Street Address: ";
lblCity.Text = "City: ";
lblName.Text = "Name: ";
lblState.Text = "State: ";
lblZip.Text = "Zip: ";
}
}
private void radioBackgroundOriginal_CheckedChanged(object sender, EventArgs e)
{
avAddressCtrl.MyControl_Background = initBackBrush;
}
private void radioBackgroundLightGreen_CheckedChanged(object sender, EventArgs e)
{
avAddressCtrl.MyControl_Background = new SolidColorBrush(Colors.LightGreen);
}
private void radioBackgroundLightSalmon_CheckedChanged(object sender, EventArgs e)
{
avAddressCtrl.MyControl_Background = new SolidColorBrush(Colors.LightSalmon);
}
private void radioForegroundOriginal_CheckedChanged(object sender, EventArgs e)
{
avAddressCtrl.MyControl_Foreground = initForeBrush;
}
private void radioForegroundRed_CheckedChanged(object sender, EventArgs e)
{
avAddressCtrl.MyControl_Foreground = new System.Windows.Media.SolidColorBrush(Colors.Red);
}
private void radioForegroundYellow_CheckedChanged(object sender, EventArgs e)
{
avAddressCtrl.MyControl_Foreground = new System.Windows.Media.SolidColorBrush(Colors.Yellow);
}
private void radioFamilyOriginal_CheckedChanged(object sender, EventArgs e)
{
avAddressCtrl.MyControl_FontFamily = initFontFamily;
}
private void radioFamilyTimes_CheckedChanged(object sender, EventArgs e)
{
avAddressCtrl.MyControl_FontFamily = new FontFamily("Times New Roman");
}
private void radioFamilyWingDings_CheckedChanged(object sender, EventArgs e)
{
avAddressCtrl.MyControl_FontFamily = new FontFamily("WingDings");
}
private void radioSizeOriginal_CheckedChanged(object sender, EventArgs e)
{
avAddressCtrl.MyControl_FontSize = initFontSize;
}
private void radioSizeTen_CheckedChanged(object sender, EventArgs e)
{
avAddressCtrl.MyControl_FontSize = 10;
}
private void radioSizeTwelve_CheckedChanged(object sender, EventArgs e)
{
avAddressCtrl.MyControl_FontSize = 12;
}
private void radioStyleOriginal_CheckedChanged(object sender, EventArgs e)
{
avAddressCtrl.MyControl_FontStyle = initFontStyle;
}
private void radioStyleItalic_CheckedChanged(object sender, EventArgs e)
{
avAddressCtrl.MyControl_FontStyle = System.Windows.FontStyles.Italic;
}
private void radioWeightOriginal_CheckedChanged(object sender, EventArgs e)
{
avAddressCtrl.MyControl_FontWeight = initFontWeight;
}
private void radioWeightBold_CheckedChanged(object sender, EventArgs e)
{
avAddressCtrl.MyControl_FontWeight = FontWeights.Bold;
}
}
}