Binding Visibility in XAML to a Visibility property

天大地大妈咪最大 提交于 2019-12-12 07:58:57

问题


I've seen on the internet quite a few examples of binding a boolean to the Visibility property of a control in XAML. Most of the good examples use a BooleanToVisibiliy converter.

I'd like to just set the Visible property on the control to bind to a System.Windows.Visibility property in the code-behind, but it doesn't seem to want to work.

This is my XAML:

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

This is the code for the property:

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

In the constructor of the Window, I also have this call:

base.DataContext = this;

When I update either ActionsVisible or this.actions.Visibility, the state doesn't transfer. Any ideas to what might be going wrong?


回答1:


I think the problem is that WPF can't know that your ActionsVisible property has changed since you've not notified the fact.

Your class will need to implement INotifyPropertyChanged, then in your set method for ActionsVisible you'll need to fire the PropertyChanged event with ActionsVisible as the property name that has changed.

Hope this helps...




回答2:


Change your property to be a DependencyProperty. This will handle the updating for you.

        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:


Write: NotifyPropertyChanged("ActionsVisible")



来源:https://stackoverflow.com/questions/384776/binding-visibility-in-xaml-to-a-visibility-property

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!