BlackCoin's Corner

In diesem Blog dreht es sich zu 90 % um den Themenbereich C# .Net

Der ObjectDataProvider

Die Anwendungsgebiete dieser Klasse unter WPF sind recht vielseitig, ZB. kann mithilfe dieser Klasse, ein Objekt Instanziiert werden, natürlich kann man in WPF auch einzelne Objekte auf andere Art und weise, über Ihren Default mäßig Parameterlosen Constructor erstellen, jedoch funktioniert die Instanziierung des jeweiligen Objektes nicht, sobald die jeweilige Klassen keine Parameterlosen Constuctor bereitstellt. Da es im XAML Code keine direkte Möglichkeit gibt, der Klasse eine Parameter zu übergeben kommt genau an dieser stelle, nun der ObjectDataProvider aus dem Namespace System.Windows.Data ins Spiel.

<ObjectDataProvider x:Key="CustomerDataSource" ObjectType="{x:Type data:Customer}"> 
  <ObjectDataProvider.ConstructorParameters> 
    <system:String>Lars</system:String>


    <system:String>Schmitt</system:String> 
  </ObjectDataProvider.ConstructorParameters> 
</ObjectDataProvider>

Dank dieses einfachen XAML Codes können wir nun, das Objekt vom Typ Customer mit zwei Parametern unter XAML erstellen und auch als Bindungs Datenquelle verwenden.

 

Eine weitere Funktion wäre, dass mit dessen Hilfe auch auf Methoden eines einzelnen Objektes zugegriffen werden, um ZB. deren Rückgabe als Datenquelle zu verwenden.

Wie es ZB. bei dieser Implantation geschieht:

           <ObjectDataProvider MethodName="GetValues" ObjectType="{x:Type sys:Enum}" x:Key="SampleData"> 
                <ObjectDataProvider.MethodParameters> 
                      <x:Type TypeName="local:TestEnum" /> 
                </ObjectDataProvider.MethodParameters>


            </ObjectDataProvider>

Den meistens, wird es schon aufgefallen sein, was dieser ausschnitt macht, richtig dieser XAML ausschnitt ermöglicht es unter XAML, die einzelnen Konstanten einer Enumeration innerhalb eines Arrays auszulesen und diese als Datenquelle, ZB, für eine Selelektion in einer ComboBox bereitzustellen.


Posted: Dez 13 2009, 06:39 von Lars Schmitt | mit 2 comment(s)
Abgelegt unter:

Kommentare

christian brunner sagte:

Hallo Lars,

ich habe es unter Net 4.0 ausprobiert, aber leider funktioniert es leider nicht mehr.

Bei

ObjectType="{x:Type data:xyDatenKlasse}"

wird das keyword "data" nicht akzeptiert - oder liege ich da falsch?

liebe grüsse

christian

# März 13, 2010 6:12

Lars Schmitt sagte:

Hallo Christian,

hast du den Namespace System.Windows.Data eingebunden?

# April 7, 2010 9:18
Kommentar abgeben

(verpflichtend) 

(verpflichtend) 

(optional)

(verpflichtend)