Comment simplement lier cela à ConverterParameter?
J'ai un problème et je ne sais pas comment résoudre ce simple, j'ai beaucoup de points comme cela, alors la solution ne doit pas être compliqué.
J'ai comme projet avec des Paramètres et des principaux XAML.
J'ai dépendance projet avec la Liaison Convertisseur et Fichier XAML ressemble:
<TextBlock Text="{Binding X.Y.Z, Converter={StaticResource ProbabilityConverter}, ConverterParameter=??????????????, Mode=OneWay}"/>
Ce fichier XAML est en cours de chargement par le principal fichier XAML de projet principal.
Je dois passer de la valeur d'une propriété à partir du Paramètre de ConverterParameter
, ce paramètre peut être en train de changer au moment de l'exécution, alors ce doit être Binding
, Binding
je peux le faire uniquement pour DependencyProperty
dans ce cas.
Je dois faire DependencyProperty
wrapper pour ce Paramètre de propriété pour résoudre ce problème?
Quand j'essaie de définir Binding
dans ConverterParameter
je vais obtenir cette exception à l'exécution:
Une 'Liaison' ne peut pas être mis sur le
'ConverterParameter propriété de type
"De caractère obligatoire". Un "Liant" ne peut être réglé
sur une DependencyProperty d'un
DependencyObject.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez lier à la propriété, il n'a pas à être une propriété de dépendance. Mais si vous voulez que votre INTERFACE utilisateur afin de refléter les changements dans la propriété immédiatement lorsqu'elles se produisent, vous avez deux options:
INotifyPropertyChanged
sur le type qui détient des biens de propriété et d'élever lePropertyChanged
événement lors de la modification de la propriété.EDIT:
Comme indiqué dans l'édition de la question, il n'est pas possible de se lier à
ConverterParameter
. Mais vous pouvez utiliserMultiBinding
. Par exemple, supposons que vous souhaitez lier à une date et à donner le convertisseur culture de la spécification d'un paramètre et d'actualisation de la liaison quand la culture des changements (je ne suis pas sûr que ce soit une bonne idée, mais il sert bien à titre d'exemple). Vous pourriez faire comme ceci:Ici, à la fois
Date
etSettings
sont des propriétés de l'actuelDataContext
.DateCultureConverter
implémenteIMultiValueConverter
et vous auriez probablement le mettre dans les ressources de quelques niveaux de la hiérarchie dans l'application réelle.Vous pouvez utiliser l'une des solutions suivantes:
https://marlongrech.wordpress.com/2008/08/03/my-wish-came-true-i-can-now-use-databinding-in-a-converterparameter/
Vous devez intégrer la classe BindableParameter et BindableParameterExtension (voir ci-dessous) et ensuite vous pouvez l'utiliser comme suit:
En XAML:
La Propriété "TargetProperty":
de la BindableParamerter doit être définie à l'origine lié à la propriété (dans ce cas "zone de texte.Texte").
L'Exemple De Convertisseur:
Le paramètre peut être utilisé dans le "Convertir" et le "ConvertBack" méthode (utile pour se lier à un modèle de vue).
Classe BindableParameter et BindableParameterExtension URL (voir ci-dessus (pas mon code))
http://drwpf.com/blog/2007/09/02/supplying-an-object-reference-in-the-constructorparameters-collection-of-an-objectdataprovider/
Vous devez intégrer la classe ObjectReference:
http://www.drwpf.com/blog/Portals/0/Code/ObjectReference.cs.txt
En XAML:
La ciselée:
crée la référence dans un dictionnaire statique et de la partie:
prend cet objet de référence à partir du Dictionnaire --> pas de liaison ici, le dictionnaire est rempli sur l'analyse.
L'Exemple De Convertisseur:
http://www.codeproject.com/Articles/456589/Bindable-Converter-Parameter
En XAML:
L'Exemple De Convertisseur: