Je veux que le 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 le XAML? Y a-t-il une meilleure façon de procéder?
Oui. Vous devriez pouvoir lier IsEnabled du stackpanel à la propriété Visibility 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>