Pourquoi mon IMultiBindingConverter obtenir un tableau de chaînes lorsqu'il est utilisé pour TextBox.Text ensemble?

StackOverflow https://stackoverflow.com/questions/2933183

Question

Je suis en train d'utiliser un MultiBinding avec un convertisseur où les éléments enfants ont également un convertisseur.

Les regards XAML comme ceci:

<TextBlock>
<TextBlock.Text>
    <MultiBinding Converter="{StaticResource localizedMessageConverter}" ConverterParameter="{x:Static res:Resources.RecordsFound}" >
        <Binding Converter="{StaticResource localizedMessageParameterConverter}" ConverterParameter="ALIAS" Path="Alias" Mode="OneWay" />
        <Binding Converter="{StaticResource localizedMessageParameterConverter}" ConverterParameter="COUNT" Path="Count" Mode="OneWay" />
    </MultiBinding>
</TextBlock.Text>

Le problème que je suis face ici est, chaque fois que cela est utilisé avec un TextBlock pour spécifier la propriété Text, ma mise en œuvre de IMultiValueConverter obtient une collection d'objets de chaînes au lieu de la classe retournée par la IValueConverter. Il semble que la méthode ToString () est appelée sur le résultat du convertisseur interne et transmis à la IMultiValueConverter. Si elle est utilisée pour définir la propriété Contenu de l'étiquette, tout va bien.

Il me semble que le cadre est en supposant que le type de retour sera chaîne, mais pourquoi? Je peux voir cela pour le MultiBinding car il devrait donner un résultat qui est compatible avec TextBlock.Text, mais pourquoi serait-ce aussi le cas pour les liaisons à l'intérieur d'un MultiBinding?

Si je retire le convertisseur des éléments de liaison interne, les types natifs sont renvoyés. Dans ma chaîne de cas et int.

Était-ce utile?

La solution

Probablement le paramètre targetType de votre convertisseur localizedMessageParameterConverter est System.String. En effet, le type de cible des fixations est héritée de la MultiBinding et la targetType du MultiBinding est System.string parce TextBlock.Text est une propriété de chaîne.

Voir l'article suivant pour un problème similaire: Multi- valeur Convertisseurs, valeur Convertisseurs et le cas du mauvais type cible

Selon Microsoft Connect, cela a été corrigé dans WPF 4.0. Voir: Microsoft Connect

L'article ci-dessus explique également une solution de contournement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top