soy nuevo en wpf y xaml. Encuentro soluciones para la mayoría de los problemas (en otros idiomas) buscando aquí n allí o buscando en Google, pero este me volvió loco. busqué mucho en google y hojeé muchos foros, ¡pero parece que esta vez me encontré con un verdadero desafío!¿Cómo cambiar dinámicamente ConverterParameter (o cualquier) propiedad de un MultiBinding (o cualquier otro recurso) en tiempo de ejecución?
He siguiente código en 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 clase devuelve nombre completo mediante la combinación de partes individuales del nombre. El valor de retorno se basa en el valor de ConverterParameter que puede ser uno de los siguientes: FirstNameFirst, LastNameFirst, OnlyFirstName, OnlyLastName, Iniciales (hay unos cuantos más, pero por simplicidad, no vamos a considerar ellos)
Este código funciona bien. Yo uso siguiente para obtener el resultado:
<TextBlock Text="{DynamicResource CustomerFullNameBinding}"/>
Sin embargo, el problema es que si yo uso el recurso CustomerFullNameBinding 20 veces en mi código (como se muestra abovw) todos ellos se mostrará el nombre en un formato especial . (Es decir, aquí en la declaración de CustomerFullNameBinding he puesto ConverterParameter = "LastNameFirst" lo que todas las 20 referencias mostrará el nombre sólo de esa manera.)
Ahora mi pregunta es ¿Puedo hacer que sea más "generalizada" de modo que Puedo establecer el valor de ConverterParameter dinámicamente? es decir, puedo tener varios bloques de texto que pueden mostrar el nombre completo en diferentes formatos. Yo sé que es posible si creamos múltiples recursos como sigue:
<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 ...
pero no quiero que, 'coz que va a realmente hacer mi código demasiado voluminosos, y lo más importante es que voy de anular concepto de reutilización de los recursos !
Por favor, sugiero cualquier posible solución.
Gracias de antemano.
Nota: Obtuve la idea original desde here. El ejemplo de trabajo similar se puede encontrar msdn.microsoft.com/en-us/library/ms771336.aspx.
Etiquetas: WPF XAML StaticResource vinculantes
Muchas gracias por su rápida respuesta. Eres cierto. ConverterParameter es una propiedad simple, no una DependencyProperty. En realidad, soy nuevo en WPF y, a veces, ¡también me olvido de los conceptos básicos! Tener un control de usuario vinculado a un recurso dinámico que devuelve una estructura en lugar de una cadena es realmente una gran idea. ¡Realmente no lo he intentado, pero estoy seguro de que va a funcionar! ¡¡¡Gracias otra vez!!! – mg007