代码之家  ›  专栏  ›  技术社区  ›  Jared

将XAML中的可见性绑定到可见性属性

  •  7
  • Jared  · 技术社区  · 16 年前

    我在互联网上看到过很多将布尔值绑定到XAML中控件的可见性属性的例子。大多数好的例子都使用布尔可见变换器。

    我只想在控件上设置Visible属性以绑定到代码隐藏中的System.Windows.Visibility属性,但它似乎不想工作。

    这是我的XAML:

    <Grid x:Name="actions" Visibility="{Binding Path=ActionsVisible, UpdateSourceTrigger=PropertyChanged}" />
    

    这是该属性的代码:

    private Visibility _actionsVisible;
    public Visibility ActionsVisible
    {
       get
       {
          return _actionsVisible;
       }
       set
       {
          _actionsVisible = value;
       }
    }
    

    在窗口的构造函数中,我还具有以下调用:

    base.DataContext = this;
    

    当我更新actionsvisible或this.actions.visibility时,状态不会传输。有什么问题吗?

    3 回复  |  直到 13 年前
        1
  •  7
  •   Craig Shearer    16 年前

    我认为问题在于WPF不知道您的actionsVisible属性已经更改,因为您没有通知这个事实。

    您的类需要实现InotifyPropertyChanged,然后在ActionsVisible的set方法中,您需要使用ActionsVisible作为已更改的属性名激发PropertyChanged事件。

    希望这有帮助…

        2
  •  8
  •   NR.    16 年前

    将属性更改为DependencyProperty。这将为您处理更新。

            public Visibility ActionsVisible
        {
            get { return (Visibility)GetValue(ActionsVisibleProperty); }
            set { SetValue(ActionsVisibleProperty, value); }
        }
    
        // Using a DependencyProperty as the backing store for ActionsVisible.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty ActionsVisibleProperty =
            DependencyProperty.Register("ActionsVisible", typeof(Visibility), typeof(FooForm));
    
        3
  •  1
  •   Jérôme Verstrynge    13 年前

    写: NotifyPropertyChanged("ActionsVisible")