7

XAMLのコントロールのVisibilityプロパティにブール値をバインドする例をインターネットでかなり見ました。良い例のほとんどは、BooleanToVisibiliyコンバーターを使用しています。

コントロールの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;
   }
}

Windowのコンストラクターでは、次の呼び出しもあります。

base.DataContext = this;

ActionsVisibleまたはthis.actions.Visibilityのいずれかを更新すると、状態が転送されません。何がうまくいかないかについてのアイデアはありますか?

4

3 に答える 3

8

プロパティを 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));
于 2008-12-21T21:06:12.370 に答える
7

問題は、事実を通知していないため、 ActionsVisible プロパティが変更されたことをWPFが認識できないことだと思います。

クラスは INotifyPropertyChanged を実装する必要があります。次に、ActionsVisible の set メソッドで、変更されたプロパティ名として ActionsVisible を使用して PropertyChanged イベントを発生させる必要があります。

お役に立てれば...

于 2008-12-21T18:39:21.137 に答える
1

書く:NotifyPropertyChanged("ActionsVisible")

于 2010-08-31T12:45:33.837 に答える