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

Posted

技术标签:

【中文标题】如何将一个控件的属性绑定到另一个控件的属性?【英文标题】:How to bind a control's property to another control's property? 【发布时间】:2012-03-24 02:58:03 【问题描述】:

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

this.formStackPanel.IsEnabled = someValue;
if(this.formStackPanel.IsEnabled)

    this.saveButton.Visibility = Visibility.Visible;

else

    this.saveButton.Visibility = Visibility.Collapsed;

难道没有办法在 XAML 中绑定这些属性吗?有更好的方法吗?

【问题讨论】:

【参考方案1】:

是的。您应该能够将堆栈面板的 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>

【讨论】:

如果不是切换按钮,我有一个自定义控件(比如说 CustomControl),它有一个切换按钮,那么除了 ElementName=CustomControl.togglebutton 之外可以做同样的事情?

以上是关于如何将一个控件的属性绑定到另一个控件的属性?的主要内容,如果未能解决你的问题,请参考以下文章

将命令属性添加到任何自定义控件

当通过网络接收的数据更改属性时,如何将控件绑定到属性更改?

如何将不同类中的两个 Switch 控件绑定到同一个 bool 属性?

如何给DevExpress的LookUpEdit控件绑定多列数据

如何将控件的 BackColor(或其他属性)绑定到存储在 DataSource 中的字符串值?

如何设置控件属性(在DataTemplate和UserControl中)的绑定以使用ItemSource的给定属性?