gpt4 book ai didi

wpf - 使用 WPF 显式绑定(bind)时检查挂起的更改

转载 作者:行者123 更新时间:2023-12-04 14:07:34 25 4
gpt4 key购买 nike

我有一个模式弹出窗口,其中包含一个 CheckBox,当用户单击表单上的保存按钮时,它使用显式绑定(bind)来更新绑定(bind)源。

<CheckBox Content="Default" IsChecked="{Binding Path=Unit.IsDefault, Mode=TwoWay, UpdateSourceTrigger=Explicit"/>

现在我想在表单中添加一个取消按钮,如果用户单击它,我想检查是否有任何待处理的绑定(bind)更新,如果有,向用户显示一条消息。

这可能与绑定(bind)有关吗?我希望有类似的东西:
BindingExpression binding = cb.GetBindingExpression(CheckBox.IsCheckedProperty);
binding.HasPendingUpdates(); // Anything similar to this?

如果做不到这一点,是否有人对如何跟踪尚未明确更新的绑定(bind)的更改有任何其他建议?

最佳答案

正如 Kurian 指出的那样,属性 IsDirtyBindingExpressionBase如果您使用的是 .NET 4.5,则可以使用。

同时,解决方法可能是检查 内部 房产 NeedsUpdate使用反射:

public static bool IsDirty(this BindingExpression binding)
{
if (binding == null)
throw new ArgumentNullException("binding");

var needsUpdateProperty = typeof(BindingExpressionBase).GetProperty("NeedsUpdate", BindingFlags.Instance | BindingFlags.NonPublic);
var isDirtyAsObject = needsUpdateProperty.GetValue(binding, null);
if (isDirtyAsObject is bool)
return (bool)isDirtyAsObject;

return false;
}

关于wpf - 使用 WPF 显式绑定(bind)时检查挂起的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8561286/

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