Frage

Ich habe im Internet schon einige Beispiele gesehen eine boolean auf die Visibility-Eigenschaft eines Steuerelements in XAML zu binden. Die meisten der guten Beispiele verwenden einen BooleanToVisibiliy Konverter.

Ich möchte nur die Visible-Eigenschaft auf dem Steuerelement an eine System.Windows.Visibility Eigenschaft zu binden, in der Code-behind, aber es scheint nicht arbeiten zu wollen.

Das ist mein XAML:

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

Dies ist der Code für die Eigenschaft:

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

Im Konstruktor des Fensters, habe ich auch diesen Ruf haben:

base.DataContext = this;

Wenn ich entweder ActionsVisible oder this.actions.Visibility aktualisieren, ändert sich der Zustand nicht übertragen. Irgendwelche Ideen, was könnte schief gehen werden?

War es hilfreich?

Lösung

ich glaube, das Problem ist, dass WPF kann nicht wissen, dass Ihr ActionsVisible Eigenschaft hat sich verändert, seit Sie die Tatsache nicht informiert haben.

Ihre Klasse müssen INotifyPropertyChanged, dann in Ihrem Set-Methode für ActionsVisible implementieren Sie das Property Ereignis mit ActionsVisible als Eigenschaftsnamen abfeuern müssen, die sich geändert hat.

Hope, das hilft ...

Andere Tipps

Ändern Sie Ihre Immobilie ein DependencyProperty zu sein. Dadurch wird die Aktualisierung für Sie.

        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));

Schreiben: NotifyPropertyChanged("ActionsVisible")

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top