| 

.NET C# Java Javascript Exception

2
Ich nutze in C# Code folgende Methode um alle Länder auszulesen
CultureInfo.GetCultures(CultureTypes.AllCultures & ~CultureTypes.NeutralCultures);
dasselbe probiere ich jetzt direkt im ObjectDataProvider aufzurufen. Das funktioniert auch wenn ich es folgendermaßen mache:
<ObjectDataProvider MethodName="GetCultures" ObjectType="{x:Type cul:CultureInfo}" x:Key="Countrys">
<ObjectDataProvider.MethodParameters>
<x:Static Member="cul:CultureTypes.AllCultures"/>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>


Wie schaffe ich es aber wie im C# Code folgenden Konstruktor an den ObjectDataProvider zu übergeben:
CultureTypes.AllCultures & ~CultureTypes.NeutralCultures
05.05.2011
schulz3000 390 1 6
2 Antworten
0
Hallo,

ich glaube bei Deinem Lösungsansatz liegt ein Denkfehler vor. Der ObjectDataProvider versucht den Konstruktor des CultureInfo Type aufzurufen. Dieser hat folgende mögliche Konstruktoren (nämlich um genau eine spezifische CultureInfo zu erzeugen):

public CultureInfo(string s) { }
public CultureInfo(int i) { }
public CultureInfo(string s, bool b) { }
public CultureInfo(int i, bool b) { }

*quatsch* (@edit maria)Dann versuchst Du im ObjectDataProvider eine static method aufzurufen, was meines Wissens nach nicht funktioniert.
Was möchtest du genau machen? Eine Listbox befüllen o. ä? Ich würde mir die gewünschte Funktionalität eventuell über eine eigene Klasse bereitstellen, die ich dann mit dem ObjectDataProvider verwenden kann.

Sorry erstmal von meiner Seite, dass ich nicht mehr helfen kann, aber eventuell hilft Dir auch dieser Link zur ObjectDataSource mit ConstructorParameters.
05.05.2011
Maria Simlinger 1,1k 1 9
Der XAML Ausschnitt den ich gepostet habe funktioniert und gibt eine Liste aller CultureInfos zurück.
Ich rufe die Static-Method GetCultures auf und übergebe mittels MethodParameters einen Parameter vom Typ CultureTypes. In C# kann ich diesen wie beschrieben zusammensetzen, in XAML schaffe ich das bis jetzt noch nicht. Die Möglichkeit das ganze über eine eigene Methode zu realisieren wollte ich mir eigentlich sparen.
schulz3000 05.05.2011
0
Hallo,

Gut, die Fehler im Output kann man ja ignorieren (bezügl. Konstruktor :-)

Kommt es für Dich in Frage Code Behind zu verwenden? Dann hilft folgendes im Konstruktor des Windows / UserControls wo auch immer der ObjectDataProvider zu finden ist:

ObjectDataProvider odp = this.FindResource("Countrys") as ObjectDataProvider;
if (odp != null)
{
using (odp.DeferRefresh())
{
odp.MethodParameters[0] =
(CultureTypes.AllCultures & ~CultureTypes.NeutralCultures);
}
}


Referenz: How to use ObjectDataProvider MethodName to pass dynamic parameters instead of hard coding parameters

Grüße
Maria
05.05.2011
Maria Simlinger 1,1k 1 9

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH