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:

  1. Angabe des Namespaces im Windows-Element
  2. Markup zum Hinzufügen des Steuerelements
geschehen.

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" />

WPF Fast Start