1

ウィンドウにテキストボックスがあり、canExecute関数を使用してフィールドが空かどうかを確認しています。テキストボックス内で使用されるDependencyPropertyにto-wayバインディングがあります。とにかく、CanExecuteでは常にnullです(編集:nullではなく、空です: "")。どこが間違っているのか教えていただけますか?

<TextBox Text="{Binding Path=StatusName, ElementName=Window, Mode=TwoWay}" x:Name="StatusNameTextBox" />

public String StatusName
    {
        get { return (String)GetValue(StatusNameProperty); }
        set { SetValue(StatusNameProperty, value); }
    }

public static readonly DependencyProperty StatusNameProperty =
        DependencyProperty.Register("StatusName", typeof(String), typeof(AddStatusWindow), new UIPropertyMetadata(""));

private void AddNewStatusCommand_CanExecute(object sender, CanExecuteRoutedEventArgs e)
    {
        e.CanExecute = !String.IsNullOrEmpty(StatusName);

    }

PS:VSデボガーにバインディングエラーはありません

4

1 に答える 1

1

バインディングで、UpdateSourceTrigger=PropertyChangedを設定します。TextBoxの場合、デフォルトはLostFocusであるため、タブアウトするまで空の文字列が表示されます。

于 2012-08-21T09:13:05.697 に答える