[WPF] Menuクリック時にLostFocusによるバインド更新されない

2018-06-24 (日)

メニューバーをクリックしてもTextBoxにフォーカスが残り、UpdateTrigerが呼ばれずTextBoxにバインドした値が更新されない罠。
FocusManager.IsFocusScopeで解決。

環境

  • Windows 10 Pro 64bit 1709
  • Visual Studio Community 2017 15.7.3
  • .NET Framework 4.6.1
  • C# 7.0

結果

MenuFocusManager.IsFocusScope="False"を設定すれば良い。
Menuをクリックすると、LostFocusが実行されるようになる。

<Window>
    <DockPanel>
        <Menu DockPanel.Dock="Top" FocusManager.IsFocusScope="False">
            <MenuItem Header="保存" Command="{Binding SaveCommand}"/>
        </Menu>

        <TextBox Text="{Binding Name}"/>
    </DockPanel>
</Window>

感謝

2018-06-24 (日)