フォームが無効になったときにフォームのSaveButtonが消えるようにしたい。私はこのようにします:
this.formStackPanel.IsEnabled = someValue;
if(this.formStackPanel.IsEnabled)
{
this.saveButton.Visibility = Visibility.Visible;
}
else
{
this.saveButton.Visibility = Visibility.Collapsed;
}
XAMLでこれらのプロパティをバインドする方法はありませんか?それを行うより良い方法はありますか?
はい。 stackpanelのIsEnabledをボタンのVisibilityプロパティにバインドできるはずです。ただし、コンバータが必要です。 WPFには、ジョブを実行するBooleanToVisibilityConverterクラスが付属しています。
<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>