locked
Steuerelemente an eine Datenquelle binden RRS feed

  • Frage

  • Ich versuche ein Label Content an eine Datenquelle zu binden. Als Anleitung nutzte ich folgende Anleitung:

    http://msdn.microsoft.com/de-de/library/vstudio/ee621313(v=vs.110).aspx

    Mir ist allerdings gar nicht klar wie ich die Daten aus der Datenbank in das Label Content bekomme.

    Gibt es vielleicht irgendwo ein Tutorial in dem ganz eindeutig ohne Schnickschnak ein Wert aus einer Datenbank an ein Steuerelement übergeben wird?


    Es geht mir um WPF(XAML) Visual Studio Proff. 2010, VisualBasic, Win7 und verständliche Hilfe. Als Quelle nutze ich oft msdn Hilfe.

    Freitag, 18. April 2014 19:02

Alle Antworten

  • Hi Thomas,
    geht es Dir wirklich um Silverlight? Wenn ja, dann musst Du 2 Teile programmieren:

    1. eine Bereitstellungskomponente der Daten, ein WCF-Service oder im einfachsten Fall ein WebService

    und

    2. im Silverlight den Aufruf der Bereitstellungskomponente, die die Daten liefert, die dann in den Steuerelementen angezeigt werden.

    In dem von Dir genannten Link ist eine bereits etwas komplexere Herangehensweise gezeigt. Die Bereitstellungskomponente ist ein WCF-Service, der die Daten aus einem SQL Server bereitstellt und auch Änderungen wieder zurückschreibt. Bei diesen Szenario wird bereits viel Logik im Hintergrund ausgeführt.

    Ein einfaches Projekt lässt sich recht einfach erstellen:

    1. lege ein einfaches Silverlight Projekt an ohne WCF Service. Damit wird eine Projektmappe mit 2 Projekten angelegt: Silverlight Anwendung und Web Anwendung

    2. Füge in der Web Anwendung einen WebService (amsx) hinzu. Da wird eine Mustermethode "HelloWorld" angelegt, die man erst einmal für Testzwecke nutzen kann. Für den Datenbankzugriff sind dann entsprechende WebMethoden hinzuzufügen, die aus dem Datenbankserver Daten lesen und bereitstellen bzw. Daten auch zurückschreiben.

    3. Übersetzen der Projektmappe, um den WebService auch nutzen zu können.

    4. In der Silverlight Anwendung eine Service Reference hinzufügen, indem über "Discover" der WebService der Projektmappe erkannt wird, der dann als Servicereferenze hinzugefügt wird.

    5. Die Oberfläche gestalten mit den Anzeigeelementen, z.B. so mit einer TextBox, die das Ergebnis des Aufrufes der HelloWorld-Methode anzeigt:

    <UserControl x:Class="SilverlightApplication1.MainPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        d:DesignHeight="300" d:DesignWidth="400" Loaded="UserControl_Loaded">
      <Grid x:Name="LayoutRoot" Background="White">
        <TextBox Name="tb1"/>
      </Grid>
    </UserControl>

    6. Im Code den Service instanziieren, die Ereignisse zum Abschluss der asynchronen Abfragen anhängen, den Aufruf der Methode im WebService starten und nach Abschluss der Abarbeitung die Ergebnisse zur Anzeige bringen. Das könnte dann so asussehen:

    using System.Windows;
    using System.Windows.Controls;
    
    namespace SilverlightApplication1
    {
      public partial class MainPage : UserControl
      {
        public MainPage()
        {
          InitializeComponent();
        }
    
        ServiceReference1.WebService1SoapClient ctx = new ServiceReference1.WebService1SoapClient();
    
        private void UserControl_Loaded(object sender, RoutedEventArgs e)
        {
          ctx.HelloWorldCompleted += ctx_HelloWorldCompleted;
          ctx.HelloWorldAsync();
        }
    
        private void ctx_HelloWorldCompleted(object sender, ServiceReference1.HelloWorldCompletedEventArgs e)
        {
          tb1.Text=e.Result;
        }
      }
    }

     Aufbauend auf diesem Grundprinzip kann man dann alles verfeinern.

    --
    Peter

    • Als Antwort vorgeschlagen Tobias Scholze Dienstag, 22. April 2014 08:07
    Samstag, 19. April 2014 06:25
  • Hallo Peter

    Zunächst vielen Dank für Deine Antwort. Es geht mir tatsächlich um Silverlight und in diesem Fall WCF. Es wird ein paar Tage dauern bis ich mir Deine Antwort genauer angesehen habe.

    Vielen Dank und eine sehr angenehme Woche.

    Thomas


    Es geht mir um WPF(XAML) Visual Studio Proff. 2010, VisualBasic, Win7 und verständliche Hilfe. Als Quelle nutze ich oft msdn Hilfe.

    Dienstag, 22. April 2014 06:51