IsDefault キーボードの Enter キーを使用してボタン コードを実行すると、テキスト ボックスの値 (UpdateSourceTrigger) が保存されない
修正のためにコード ビハインドで .focus を使用しています。より良い修正方法はありますか?
すべてのキーストロークでテキスト ボックス コードを実行したくないので、UpdateSourceTrigger=PropertyChanged を提案しないでください。
XAML
<Window x:Class="MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" DataContext="{Binding}">
<StackPanel Orientation="Vertical" Width="120">
<TextBox Text="{Binding ShowTextBox,UpdateSourceTrigger=Default}" />
<Button Name="btnOK" Content="OK" IsDefault="True" Command="{Binding cmdOK}" />
</StackPanel>
コードビハインド
Class MainWindow
Sub New()
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
Dim vmMain1 As New vmMainWindow
Me.DataContext = vmMain1
End Sub
Private Sub btnOK_Click(sender As Object, e As RoutedEventArgs) Handles btnOK.Click
' btnOK.Focus() 'this line would be needed to get a fix that I am using now
End Sub
End Class
ビューモデル
Public Class vmMainWindow
Private _cmdOk As RelayCommand
Public ReadOnly Property cmdOK As RelayCommand
Get
If _cmdOk Is Nothing Then
_cmdOk = New RelayCommand(Sub()
MessageBox.Show(ShowTextBox)
End Sub)
End If
Return _cmdOk
End Get
End Property
Private _ShowTextBox As String = ""
Public Property ShowTextBox As String
Get
Return _ShowTextBox
End Get
Set(value As String)
_ShowTextBox = value
End Set
End Property
End Class
btnOK.Focus() のコメントを外すと、動作する結果が得られます。<Window.InputBindings><KeyBinding Key="A" Modifiers="Alt"/></Window.InputBindings>
この修正プログラムの問題点は、コード ビハインド機能がないため、修正プログラムをどのように使用するかわからないことです。
ご意見ありがとうございます。ジョシュ