Comment boolean && deux convertisseurs de visibilité
J'ai deux convertisseurs pour la visibilité, l'une basée sur le fait qu'un champ a été mis à jour et une basée sur le fait qu'un champ est autorisé à être vu. J'utilise le updatedField un pour chaque élément de texte sur ma page de sorte qu'une étoile apparaît à côté d'une mise à jour de champ. Mais certains éléments de texte ne sont visibles que pour certains utilisateurs en fonction des niveaux d'autorisation.
Par exemple:
<Image Visibility="{Binding ElementName=MyObject, Path=UpdatedFields, Mode=OneWay, Converter={StaticResource updatedFieldConverter}, ConverterParameter=FieldToTest}" Source="Properties:Resources.star_yellow" />
et
<TextBlock FontSize="21" Foreground="{DynamicResource LabelBrush}" Text="{x:Static Properties:Resources.Some_Text}" Visibility="{Binding Source={StaticResource allowedFields}, Path=Some_Text_Field, Converter={StaticResource visibilityConverter}}" />
Mon problème est que pour le cas de la permission-champs requis-je besoin pour exécuter les deux convertisseurs pour déterminer si la star se montre. Est-il un moyen de faire un booléen "Et" sur les résultats de deux convertisseurs?
J'ai regardé ce post mais il ne semble pas permettre de différents ensembles de paramètres à passer dans les deux convertisseurs.
-------Mise à jour--------
J'ai aussi essayé de créer un MultiValueConverter avec ce code xaml
<Image Grid.Row="4" Grid.Column="0" Source="star_yellow.png">
<Image.Visibility>
<MultiBinding Converter="{StaticResource combinedVisibilityConverter}" ConverterParameter="FieldToTest" >
<Binding ElementName="allowedFieldsModel" Path="Some_Text_Field" Mode="OneWay" />
<Binding ElementName="MyObject" Path="UpdatedFields" Mode="OneWay" />
</MultiBinding>
</Image.Visibility>
</Image>
Mais quand il entre dans le convertisseur, les deux valeurs sont "DependencyProperty.UnsetValue". Donc, je suis apparemment fait quelque chose de mal ici.
--------Solution---------
J'ai dû modifier pour cela, mais cela a fonctionné.
<Image.Visibility>
<MultiBinding Converter="{StaticResource combinedVisibilityConverter}" ConverterParameter="FieldToTest">
<Binding Source="{StaticResource allowedFieldsModel}" Path="Some_Text_Field" />
<Binding Path="MyObject.UpdatedFields" />
</MultiBinding>
</Image.Visibility>
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser un MultiBinding avec une courte, faite à la main IMultiValueConverter.
Exemple:
... et le convertisseur ...
La fin de la partie ici, mais une solution plus simple: juste envelopper le contrôle d'un autre contrôle. Je préfère cela à avoir beaucoup de Convertisseurs de faire des choses différentes.
Une chose qui vient à l'esprit est, peut-être, au lieu de deux différents champs booléens, un seul bit du champ créé par le joint torique ensemble updatedField et allowedField. Ensuite, vous pouvez avoir trois convertisseurs de valeur, tous fonctionnant sur le même champ.
Ou simplement calculer un autre champ dans votre modèle de données qui ne le ANDing là. C'est probablement la plus efficace (en termes de fonctionnement).
Vous pouvez passer un tableau de deux objets pour le convertisseur dans la
ConverterParameter
- construire le tableau dans le code XAML.