Je sais que cela date, mais vous n'avez pas besoin de réimplémenter quoi que ce soit.
Ce que j'ai fait, c'est annuler la valeur de la propriété comme ceci :
<!-- XAML code -->
<StackPanel Name="x" Visibility="{Binding Path=Specials, ElementName=MyWindow, Converter={StaticResource BooleanToVisibilityConverter}}"></StackPanel>
<StackPanel Name="y" Visibility="{Binding Path=NotSpecials, ElementName=MyWindow, Converter={StaticResource BooleanToVisibilityConverter}}"></StackPanel>
....
//Code behind
public bool Specials
{
get { return (bool) GetValue(SpecialsProperty); }
set
{
NotSpecials= !value;
SetValue(SpecialsProperty, value);
}
}
public bool NotSpecials
{
get { return (bool) GetValue(NotSpecialsProperty); }
set { SetValue(NotSpecialsProperty, value); }
}
Et ça marche très bien !
Est-ce que j'ai manqué quelque chose ?
0 votes
Note : à partir de la version bêta 4, silverlight n'inclut pas BooleanToVisibility - vous devrez donc l'implémenter vous-même.
0 votes
Ajout d'une suggestion vocale de l'utilisateur pour obtenir le support de l'inversion. visualstudio.uservoice.com/forums/121579-visual-studio-2015/
0 votes
Je ne peux pas croire qu'ils n'aient pas implémenté des paramètres de convertisseur pour faire de telles choses.
0 votes
La solution la plus simple que j'ai trouvée est de créer une propriété dans le modèle qui renvoie la valeur négative de l'original. public bool ShowMyControl { get { return !theValue ; } } Dans WPF Visibility="{Binding MyModel.ShowMyControl, Converter={StaticResource BooleanToVisibilityConverter}}"