0

一部のボタンの可視性をブール値にバインドしましたが、ブール値が変化してもボタンの可視性は変化しません。これはなぜですか?

ブール値は次のように設定されます。

public static readonly DependencyProperty editModeToggle = DependencyProperty.Register("editMode", typeof(bool), typeof(Window));
public bool EditMode
{
    get { return(bool)GetValue(editModeToggle); }
    set { SetValue(editModeToggle, value); }
}

バインディングに問題はないと確信しています。

[注: 動作するコンバーターをセットアップし、バインディングが動作します。true から false に、またはその逆に変更しても、可視性は変わりません]

バインディング:

<Button Content="Test" Visibility="{Binding ElementName=mainWindow, Path=EditMode, Converter={StaticResource BooltoVisibilityConverter}/>
4

3 に答える 3

1

バインディングが期待どおりに機能しない場合は、次の点を確認する必要があります。

  1. bool プロパティは INotifyPropertyChanged を使用して変更を通知しますか?
  2. bool から Visibility に変換するコンバーターを使用しますか?
  3. 出力ウィンドウにバインド エラーが表示されますか?
  4. xaml のバインドまたは bool プロパティのセッターにブレークポイントを設定してみましたか?

コメントで述べたように、INotifyPropertyChangedインターフェイスを実装していません。

インターフェイスを実装する必要があるのは、ViewModel のプロパティの値が変更されるたびに、バインディングがそれを知る方法が必要です。したがって、INotifyPropertyChangedを実装した後、プロパティごとに、プロパティ名を含むPropertyChangedイベントを発生させます。そうすれば、バインディングはプロパティの値が変更されたことを認識します。

ネット上にはたくさんの記事があります。開始するための 1 つを次に示します。INotifyPropertyChanged と WPF

于 2012-08-15T07:06:36.853 に答える
0

この場合、依存関係プロパティを使用しているため、デサイクロン リストのポイント 1 は必要ありません。なければバインディングに Mode=TwoWay を追加すれば解決すると思います。

于 2012-08-15T07:29:44.163 に答える
0

依存プロパティの登録が正しくありません -

    public static readonly DependencyProperty editModeToggle = 
DependencyProperty.Register("editMode", typeof(bool), typeof(Window));

そのはず-

public static readonly DependencyProperty editModeToggle = 
    DependencyProperty.Register("EditMode", typeof(bool), typeof(Window));

プロパティのスペルに注意して'E'ください - 大文字と小文字が区別され、プロパティ名は大文字ではEditModeないため、大文字にする必要がありますeditMode

于 2012-08-15T07:38:31.693 に答える