如何将控件属性绑定到另一个控件的属性?

43

当表单被禁用时,我希望表单中的SaveButton消失。 我是这样做的:

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

有没有一种方法可以在XAML中绑定这些属性?有没有更好的方法来做到这一点?

1个回答

84

是的。您应该能够将StackPanel的IsEnabled属性绑定到您的Button的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>

如果我有一个自定义控件(比如CustomControl),其中包含一个togglebutton,那么我可以使用ElementName=CustomControl.togglebutton来实现相同的效果,而不是使用togglebutton。 - pasha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接