次の単純な 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この動作にはならないため、の使用が原因で問題が発生しているようです。