C# MultiValueConverter und die Parameter

Nuuub

Lt. Junior Grade
Registriert
Aug. 2004
Beiträge
287
Hallöle,

ich habe einen MultiValueConverter gebastelt, der 2 Bilder skaliert und sie dann übereinander legt. Der Code ist soweit fertig und tut das, was er soll nur jetzt würd ich das ganze gerne in WPF (also dem XAML-gelöht) testen.
Einbinden lässt sich das ganze ja mit

Code:
<Image>
            <Image.Source>
                <MultiBinding Converter="{StaticResource ImgConverter}" ConverterParameter="{Binding ElementName=}" >
                    <Binding Path="{Binding file1}" />
                    <Binding Path="{Binding file2}" />
                </MultiBinding>
            </Image.Source>
        </Image>

Die Frage ist nun aber, wie übergebe ich ihm alle Parameter? Die Parameter selber sind aus der GUI zu bekommen, also Werte von Slidern, Radiobuttons oder Textboxen (z.B. file1, file2). Insgesamt soll er 8 Parameter bekommen...

MfG
 
1: System.Drawing.Size size1
2: System.Drawing.Size size2
3: VerticalAlignment vAlignment
4: HorizontalAlignment hAlignment
5: bool keepAr1
6: bool keepAr2

Gesetzt über den Konstruktor.
Geht das überhaupt dem ganzen son Typmischmasch zu geben?
Die Werte für die Size's kommen aus slidern, das Alignment aus Radiobuttons (wird "berechnet") und die bool's aus Checkboxen in der GUI.
 
Naja, der Konstruktor bringt dir nichts, weil du den im XAML nicht ansprechen kannst. (In XAML 2009 gibts die x:Arguments-Direktive. Die bringt dir aber nix weil Visual Studio nur XAML 2006 unterstützt.)

Aber auch mit dem ConverterParameter wird das nichts werden, weil man den nicht binden kann. Folgender Artikel hat dazu ein paar Lösungsansätze: WPF - Binding Converter Parameter [Including Discussion about Binding Reflector]
Die einfachste Lösung wäre es die Parameter einfach als zusätzliche Values mitzugeben. Die kannst du binden und brauchst dir keine besondere Übergabemethode zu überlegen.
 
Ich denke ich habs fast.
Der Konstruktor baut beim Aufruf die Parameter aus ConvertParameter entsprechend zusammen. Das lässt sich schon mal in dem ResourceDictionary definieren. ALlerdings kommt da noch die Meldung
"Fehler 5 Der ImgCombineConvertParameter-Typ kann nicht als Objektelement verwendet werden, da er nicht öffentlich ist oder keinen öffentlicher Konstruktor ohne Parameter oder Typkonvertierer definiert."
Öffentlich ist er an allen Stellen, nur scheinbar fehlt da ein default Konstruktor.
Wie legt man den denn fest?

Ok, einfach eine leere Methode mit gleichem Namen und schon gehts. :)
 
Zuletzt bearbeitet:
Zurück
Oben