次の単純な WPF アプリケーションでTextBox
は、そのコントロールからフォーカスが失われたときにプロパティを更新するように a が設定されています。
<DockPanel>
<ToolBar DockPanel.Dock="Top">
<Button>Test</Button>
</ToolBar>
<TextBox Text="{Binding MyString}" />
</DockPanel>
public MainWindow()
{
InitializeComponent();
DataContext = this;
}
public string MyString
{
get { return _myString; }
set { _myString = value; }
}
ただし、このアプリケーションを実行すると、テキスト ボックスにテキストを入力して [テスト] ボタンをクリックすると、MyString
プロパティのブレークポイントが発生せず、イベントのイベント ハンドラーも発生しFocusLost
ません。これらのイベントは、他の手段 (ウィンドウが閉じられたなど) によってコントロールからフォーカスが失われた場合にのみ発生します。
MyString
実際には、[テスト] ボタンには、更新されるプロパティに依存するロジックが含まれているため、これが問題を引き起こしています。
FocusLost
「テスト」ボタンをクリックしたときにイベントが正しく発生し、バインディングが更新されることを確認するにはどうすればよいですか? ToolBar
を標準のボタンに置き換えてもToolBar
この動作にはならないため、の使用が原因で問題が発生しているようです。