J'utilise l'architecture MVVM pour développer une application WPF ...WPF Visibilité du bouton
Jusqu'à présent, tout s'est bien passé.
J'ai rencontré un problème avec une visibilité de liaison. Je veux minimiser l'écriture de code dans le code derrière si je peux mais si c'est OBLIGATOIRE cela ne me dérange pas de le faire.
J'ai un ViewModel. Ce modèle expose un booléen et 2 commandes. Une commande connect, une commande disconnect et un booléen DeviceCurrentlyConnected.
Fondamentalement, j'ai décidé de faire 2 boutons mais ont la visibilité du bouton basé sur le booléen.
J'ai donc eu du mal avec ça. J'ai essayé des styles avec des déclencheurs pendant longtemps.
<Button Visibility="Hidden" Content="{x:Static UIStrings:ClientStrings.DeviceBar_DisconnectCommandName}" VerticalAlignment="Center" HorizontalAlignment="Center" Height="{Binding ElementName=this.Content, Path=DesiredHeight}" Margin="10" Name="Disconnect" Command="{Binding DisconnectCurrentDeviceCommand}">
<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<DataTrigger Binding="{Binding DataCotext.DeviceConnected, RelativeSource={RelativeSource FindAncestor, AncestorType=UserControl}}" Value="True">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
Je n'arrive pas à faire fonctionner les styles du tout.
Fondamentalement, la fonctionnalité que je veux est:
DeviceConnected = false: Afficher un bouton contenu Connect et commande lié à la ConnectCommand.
DeviceConnected = true: Affiche un bouton avec une déconnexion de contenu et une commande liée à DisconnectCommand.
pour qu'un bouton soit affiché et lié au périphérique de connexion alors qu'aucun périphérique n'est actuellement connecté et qu'un bouton soit affiché lorsqu'un périphérique est connecté à la commande de déconnexion et qu'il dise le mot déconnexion.
La liaison est-elle destinée à être {{Binding DataCotext.DeviceConnected ...} 'ou est-ce une faute de frappe? c'est-à-dire, pas '{Binding DataContext.DeviceConnected ...}'. –
Votre droit. Ce devrait être DataContext. Mon code actuall est correct cependant: P. –