Ich bin neu in wpf und xaml. ich finde lösungen für die meisten probleme (in anderen sprachen), indem ich hier und da suche oder herumgoogle, aber dieses hier hat mich verrückt gemacht. ich habe viel bei google gesucht und viele foren durchstöbert, aber es scheint, dass ich dieses Mal auf eine echte herausforderung gestoßen bin!
Ich habe folgenden Code in Window.Resources:
<my:NameConverter x:Key="NameConverter"/>
<MultiBinding x:Key="CustomerFullNameBinding"
Converter="{StaticResource NameConverter}"
ConverterParameter="LastNameFirst">
<Binding Path="FirstName" />
<Binding Path="MiddleName" />
<Binding Path="LastName" />
</MultiBinding>
El NameConverter Klasse gibt den vollständigen Namen zurück, indem sie einzelne Teile des Namens kombiniert. Der Rückgabewert basiert auf dem Wert von KonverterParameter der einer der folgenden sein kann: VornameVorname, NachnameVorname, NurVorname, NurNachname, Initialen (es gibt noch einige mehr, aber der Einfachheit halber lassen wir sie hier außer Acht)
Dieser Code funktioniert gut. Ich verwende Folgendes, um das Ergebnis zu erhalten:
<TextBlock Text="{DynamicResource CustomerFullNameBinding}"/>
Das Problem ist jedoch, dass ich, wenn ich die Ressource CustomerFullNameBinding 20 Mal in meinem Code (wie oben gezeigt) würden alle von ihnen den Namen in EINEM bestimmten Format anzeigen. (d.h. hier in der Deklaration von CustomerFullNameBinding habe ich KonverterParameter="NachnameVorname" daher werden alle 20 Referenzen nur auf diese Weise angezeigt).
Jetzt ist meine Frage kann ich es mehr "verallgemeinert", so dass die ich den Wert von setzen kann KonverterParameter dynamisch? d.h. ich kann mehrere Textblöcke haben, die den vollen Namen in verschiedenen Formaten anzeigen können. Ich weiß, dass es möglich ist, wenn wir mehrere Ressourcen wie folgt erstellen:
<MultiBinding x:Key="CustomerFullNameBinding_FirstNameFirst"
Converter="..." ConverterParameter="FirstNameFirst">
......
</MultiBinding>
<MultiBinding x:Key="CustomerFullNameBinding_LastNameFirst"
Converter="..." ConverterParameter="LastNameFirst">
......
</MultiBinding>
<MultiBinding x:Key="CustomerFullNameBinding_OnlyFirstName"
Converter="..." ConverterParameter="OnlyFirstName">
......
</MultiBinding>
... and so on ...
Aber ich will nicht, dass, 'coz es wirklich meinen Code zu sperrig machen, und vor allem wird es Konzept der Wiederverwendbarkeit von Ressourcen entwerten!
Bitte schlagen Sie mir eine mögliche Lösung vor.
Vielen Dank im Voraus.
Anmerkung: Die ursprüngliche Idee habe ich von aquí . Ein ähnliches Arbeitsbeispiel finden Sie unter msdn.microsoft.com/de-us/library/ms771336.aspx.
Tags: wpf xaml statischeRessource dynamischeRessourcenbindung