0

MVVM に基づくログイン ページがあり、適切なログインを行う前に this.focus を呼び出そうとしましたが、問題は 2 回クリックする必要があることです。最初の 1 つは、キーボードを非表示にして、ユーザー名/パスワードの欠落に関する情報を提供するだけです。

したがって、ユーザーが最初にアプリケーションバーボタンをクリックしたときにフィールドが更新されないため、おそらく問題は mvvm に関連しています。

私はMVVMを初めて使用するので、MVVMを使用してページに集中するにはどうすればよいですか?

4

1 に答える 1

0

最後に、MVVMなしでやりました。以下の私のアプリケーションバーボタンハンドラ。

void Set_Details_MenuItem_Click(object sender, EventArgs e)
        {   
            object focusObj = FocusManager.GetFocusedElement();
            if (focusObj != null && (focusObj is PasswordBox || focusObj is TextBox))
            {
                if (focusObj is PasswordBox)
                {
                    var binding = (focusObj as PasswordBox).GetBindingExpression(PasswordBox.PasswordProperty);
                    binding.UpdateSource();
                    viewModel.Login();
                }
                else if (focusObj is TextBox)
                {
                    var binding2 = (focusObj as TextBox).GetBindingExpression(TextBox.TextProperty);
                    binding2.UpdateSource();
                    viewModel.Login();
                }   
            }
            else
            {
                viewModel.Login();
            }
        }
于 2012-12-03T13:27:01.713 に答える