单击某些其他控件时不会引发TextBox LostFocus

问题描述 投票:10回答:4

在下面的简单WPF应用程序中,将TextBox设置为当焦点从该控件失去焦点时更新属性,像这样

<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属性上的断点被引发为[[not,也为FocusLost提供了任何事件处理程序。事件也未引发。仅当通过某些其他方式使控件失去焦点时,才会引发这些事件(例如,关闭窗口)。

这给我们造成了问题,因为实际上,“测试”按钮包含依赖于MyString属性被更新的逻辑。

如何确保在单击“测试”按钮时正确引发FocusLost事件并更新绑定?看起来问题似乎是由ToolBar的使用引起的,因为用标准按钮替换ToolBar不会导致此行为。

wpf focus toolbar lost-focus
4个回答
3
投票
<TextBox Text="{Binding Test}" LostKeyboardFocus="UIElement_OnLostKeyboardFocus" local:MainWindow.BindOnLostKeyboardFocus="True" />

2
投票

0
投票
© www.soinside.com 2019 - 2024. All rights reserved.