0

こんにちは私はwpfの「非常に」初心者です。メニュー項目を「クリア」にしようとしています。フォーカスされたテキストボックスのテキストをクリアする必要があります。実際には、((コピー、貼り付け、切り取りなど)

組み込みのものはありますか、それともカスタムのルーティングされたコマンドを作成する必要がありますか?そうであれば、試しましたが失敗し、アイデアが必要です

ClearCommandExecutedロジックを作成しましたが、問題は「CanExecute」にあります。そこでKeyboard.FocusedElementにアクセスしようとしましたが、フォーカスされた要素がクリックされたときにそれ自体がメニュー項目であるため失敗しました!!!!

助けてください

4

2 に答える 2

1

CanExecuteQueryに渡された引数の1つを使用する必要があります。

    private void ClearCommandBindingCanExecute(object sender, CanExecuteRoutedEventArgs e)
    {
        // e.Source is the element that is active,
        if (e.Source is TextBox) // and whatever other logic you need.
        {
            e.CanExecute = true;
            e.Handled = true;
        }
    }

    private void ClearCommandBindingExecuted(object sender, ExecutedRoutedEventArgs e)
    {
        var textBox = e.Source as TextBox;
        if (textBox != null)
        {
            textBox.Clear();
            e.Handled = true;
        } 
    }

これであなたを正しい方向に向かわせるのに十分だといいのですが...

于 2011-03-25T11:57:50.730 に答える
0

FocusManagerクラスを使用してみてください。TextBoxがキーボードフォーカスを失った場合でも、フォーカススコープ内にある場合は、論理フォーカスがあります。デフォルトでフォーカススコープであるWPFのクラスは、Window、MenuItem、ToolBar、およびContextMenuです。

したがって、これを使用すると結果が得られます-

FocusManager.GetFocusedElement(winodw1); //Name of the window

詳細については、こちらをお読みください-http://msdn.microsoft.com/en-us/library/aa969768.aspx

于 2011-03-25T08:41:32.207 に答える