WPF:需要一个TextBox来拥有DataGrid单元格的一些高级功能



我的应用程序实现了一个简单的计算链,就像电子表格一样。它有一个TextBox,用户可以在其中键入一些数值,一旦编辑,代码就会继续更新所有相关字段。

我很少使用TextBox的经验告诉我,每次用户单击角色时都会触发一个事件。这种行为是不好的:假设这个人键入值"1234":计算链将为"1"执行,接下来为"12"执行,然后为"123"执行,最后为"1234"执行。

我需要一种方法来知道剪辑什么时候结束。输入后,矩形可能会变成蓝色,就像DataGrid中的矩形一样。用户应该可以使用Tab键或单击其他位置离开。

此外:空的TextBox与包含零不是一回事!空TextBox的内容应被识别为未定义。

问题是:我需要什么样的控制和辅助功能?

TIA。

听起来您只想在TextBox具有LostFocus时执行计算

在你看来,你会有

<Window...>
    <TextBox LostFocus="Perform_Calculation"/>
</Window>

然后在你的代码后面定义方法

private void Perform_Calculation(object sender, RoutedEventArgs e)
{
    // calculation logic here...
    // probably also where you will check if the Text is empty (nothing to be done)
}

或者,您可以使用TwoWay绑定,TextBox上的默认PropertyChangeTrigger应为LostFocus,因此只有当用户离开TextBox时,您才能获得属性更新。

请注意,这不会满足您在按下Enter时处理它的希望,因为TextBox仍将具有焦点。要启用此功能,请稍微扩展

<Window...>
    <TextBox LostFocus="Perform_Calculation" KeyDown="TextBox_KeyDown"/>
</Window>
private void TextBox_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Return)
    {
        // perform calculation here (probably method that you will also call
        // from LostFocus handler to avoid duplication)
    }
}

相关内容

最新更新