39 votes

Comment lier les biens d'un contrôle aux biens d'un autre contrôle ?

Je veux que le bouton SaveButton de mon formulaire disparaisse lorsque le formulaire est désactivé. Je fais ça de cette façon :

this.formStackPanel.IsEnabled = someValue;
if(this.formStackPanel.IsEnabled)
{
    this.saveButton.Visibility = Visibility.Visible;
}
else
{
    this.saveButton.Visibility = Visibility.Collapsed;
}

N'y a-t-il pas un moyen de lier ces propriétés dans la XAML ? Y a-t-il une meilleure façon de le faire ?

76voto

Matt Burland Points 18628

Oui. Vous devriez être en mesure de lier la propriété IsEnabled du panneau de pile à la propriété Visibilité de votre bouton. Cependant, vous avez besoin d'un convertisseur. WPF est livré avec une classe BooleanToVisibilityConverter qui devrait faire le travail.

<Window
  x:Class="WpfApplication1.Window1"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Window.Resources>
    <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
  </Window.Resources>
  <StackPanel>
    <ToggleButton x:Name="toggleButton" Content="Toggle"/>
    <TextBlock
      Text="Some text"
      Visibility="{Binding IsChecked, ElementName=toggleButton, Converter={StaticResource BooleanToVisibilityConverter}}"/>
  </StackPanel>
</Window>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X