Sono nuovo di wpf e xaml. trovo soluzioni alla maggior parte dei problemi (in altre lingue) cercando qui o googling ma questo mi ha fatto impazzire. ho cercato molto su google e ho sfogliato molti forum, ma sembra che questa volta abbia incontrato una vera sfida!Come convertire dinamicamente la proprietà ConverterParameter (o qualsiasi) di una risorsa MultiBinding (o qualsiasi altra) in fase di runtime?
Ho seguente codice nel 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>
Il NameConverter classe restituisce il nome completo, combinando le singole parti del nome. Il valore di ritorno si basa sul valore di ConverterParameter che può essere uno dei seguenti: FirstNameFirst, LastNameFirst, OnlyFirstName, OnlyLastName, Iniziali (ci sono un paio di più, ma per semplicità, queste cose non si Consideriamo)
Questo codice funziona bene. Io uso seguente per ottenere il risultato:
<TextBlock Text="{DynamicResource CustomerFullNameBinding}"/>
Tuttavia, il problema è che se io uso la risorsa CustomerFullNameBinding 20 volte nel mio codice (come mostrato abovw) tutti loro avrebbe mostrato il nome in un particolare formato . (Cioè Qui nella dichiarazione di CustomerFullNameBinding ho impostato ConverterParameter = "LastNameFirst" così tutti i 20 riferimenti mostrerà nome solo in questo modo.)
Ora la mia domanda è: posso fare più "generalizzata" in modo che Posso impostare il valore di ConverterParameter in modo dinamico? Ad esempio, posso avere più blocchi di testo che possono visualizzare il nome completo in diversi formati. So che è possibile se creiamo più risorse come segue:
<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 ...
Ma io non voglio che, 'coz che sarà davvero fare il mio codice troppo ingombranti, e la più importante è che ti Void concetto di riutilizzabilità delle risorse !
Si prega di suggerire qualsiasi possibile soluzione.
Grazie in anticipo.
Nota: Ho ricevuto l'idea originale da here. L'esempio di lavoro simile può essere trovato msdn.microsoft.com/en-us/library/ms771336.aspx.
Tags: WPF XAML StaticResource vincolanti
Grazie mille per la rapida risposta. Sei vero. ConverterParameter è una proprietà semplice, non DependencyProperty. In realtà sono nuovo di WPF e talvolta dimentico anche i concetti di base! Avere un controllo utente associato a una risorsa dinamica che restituisce una struttura anziché una stringa è davvero una grande idea. Non l'ho provato, ma sono sicuro che funzionerà !! Grazie ancora!!! – mg007