gpt4 book ai didi

c# - WPF 中的 EndEdit 等效项

转载 作者:太空狗 更新时间:2023-10-29 20:49:55 24 4
gpt4 key购买 nike

我有一个包含文本框的 WPF 窗口。我已经实现了一个在 Crtl-S 上执行的命令,用于保存窗口的内容。我的问题是,如果文本框是事件控件,并且我在文本框中有新编辑的文本,则不会提交文本框中的最新更改。我需要跳出文本框以获取更改。

在 WinForms 中,我通常会在表单上调用 EndEdit,所有待处理的更改都会被提交。另一种选择是使用 onPropertyChange 绑定(bind)而不是 onValidation,但我宁愿不这样做。

与 EndEdit 等效的 WPF 是什么,或者在这种情况下使用什么模式?

谢谢,

最佳答案

根据 Pwninstein 的回答,我现在已经在我的 WPF Views/Windows 公共(public)类中实现了一个 EndEdit,它将查找绑定(bind)并强制更新它们,代码如下;

下面的代码;

private void EndEdit(DependencyObject parent)
{
LocalValueEnumerator localValues = parent.GetLocalValueEnumerator();
while (localValues.MoveNext())
{
LocalValueEntry entry = localValues.Current;
if (BindingOperations.IsDataBound(parent, entry.Property))
{
BindingExpression binding = BindingOperations.GetBindingExpression(parent, entry.Property);
if (binding != null)
{
binding.UpdateSource();
}
}
}

for(int i=0; i < VisualTreeHelper.GetChildrenCount(parent); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(parent, i);
this.EndEdit(child);
}
}

protected void EndEdit()
{
this.EndEdit(this);
}

在我的 Save 命令中,我现在只需调用 EndEdit 方法,而不必担心其他程序员选择绑定(bind)方法。

关于c# - WPF 中的 EndEdit 等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/888324/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com