Wie kann ich ein WPF-Steuerelement in meine WPF-Anwendung einbinden?
Voraussetzungen:
- Plattform
- .NET Framework 3.5 SP1
- Sprachen
- XAML, C#
- Werkzeuge
- Visual C# 2008
- Zu bearbeitende Projekte
- WPFApp
Einleitung:
In diesem Tutorial wird beschrieben, wie das WPF-Steuerelement BizCardFlow in eine bestehende WPF-Anwendung integriert werden kann.
Einbinden von BizCardFlow in eine bestehende WPF-Anwendung
Das Einbinden des Steuerelements erfordert die Existenz einer bestehenden Anwendung. Um dies exemplarisch darzustellen wird in diesem Tutorial das Projekt „WPFApp“ verwendet.
Hinzufügen des Steuerelements
Damit das WPF-Steuerelement in der Toolbox erscheint, muss der aktuellen Solution (Projektmappe) das Steuerelemente-Projekt hinzugefügt werden.


Nun benötigt das WPF-Anwendungs-Projekt noch einen Verweis auf das WPF-Steuerelement-Projekt.

Nach einer Kompilierung kann das Formular, dem das Steuerelement hinzugefügt werden soll, geöffnet werden. In der Toolbox ist nun das BizCardFlow-Steuerelement zu sehen.

Dieser kann dann per Drag & Drop auf das Formular gelegt werden.

Manuell kann dies auch über:
- Angabe des Namespaces im Windows-Element
- Markup zum Hinzufügen des Steuerelements
Binden von Daten
Das Steuerelement visualisiert Daten – ohne Daten keine Visualisierung. Um jetzt Daten an das Steuerelement zu binden, kann eine ObservableCollection mit Person-Objekten gefüllt werden.
Die ObservableCollection entspringt dem Namensraum System.Collections.ObjectModel aus der Assembly WindowsBase.dll. Person dem Namensraum Microsoft.WPF.Samples und liegt in der Assembly des WPF-Steuerelements Microsoft.WPF.Samples.BizCardFlow.dll – dem hinzugefügten Projekt.
using System;
using System.Collections.ObjectModel;
using System.Windows.Forms;
using Microsoft.WPF.Samples;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
var ppl =
new ObservableCollection<Person>
{
new Person
{
Gender = "male",
FirstName = "John",
LastName = "Doe",
//...
},
new Person
{
Gender = "male",
FirstName = "John",
LastName = "Doe",
//...
},
//...
};
bizCardFlow1.ItemsSource = ppl;
}
}
}
BizCardFlow visualisiert nun nach dem Kompilieren die zugewiesenen Daten. Wenn von außen, von der MFC-Anwendung, das Selektieren eines Datensatzes gewünscht ist, kann dies über die Eigenschaft SelectedIndex forciert werden.
Binden an die SelectedItem-Eigenschaft des Steuerelements
WPF bringt eine völlig eigene Bindungs-Logik mit sich, die es enorm vereinfacht z.B. eine TextBox an die Eigenschaft LastName des aktuellen Elementes zu binden. Dies geschieht mit der sogenannten Binding-Syntax allein im Markup:
<TextBox
Text="{Binding Path=SelectedItem.LastName, ElementName=BizCardFlow1, Mode=Default}"
Width="150"
Height="25" />