Как связать свойство элемента управления со свойством другого элемента управления? - PullRequest
31 голосов
/ 06 марта 2012

Я хочу, чтобы кнопка SaveButton из моей формы исчезла, когда форма отключена.Я делаю это так:

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

Нет ли способа связать эти свойства в XAML?Есть ли лучший способ сделать это?

1 Ответ

66 голосов
/ 06 марта 2012

Да. Вы должны иметь возможность привязать IsEnabled панели стека к свойству видимости вашей кнопки. Однако вам нужен конвертер. 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>
...