gpt4 book ai didi

wpf - 卡利本微 : how to set binding UpdateSourceTrigger?

转载 作者:行者123 更新时间:2023-12-04 05:00:57 25 4
gpt4 key购买 nike

我一直在探索 Caliburn Micro MVVM 框架只是为了感受一下,但我遇到了一些问题。我有一个 TextBox 绑定(bind)到我的 ViewModel 上的字符串属性,我希望在 TextBox 失去焦点时更新该属性。

通常我会通过在绑定(bind)上将 UpdateSourceTrigger 设置为 LostFocus 来实现这一点,但我看不到在 Caliburn 中执行此操作的任何方法,因为它已自动为我设置了属性绑定(bind)。目前,每次 TextBox 的内容更改时都会更新该属性。

我的代码很简单,例如这里是我的虚拟机:

public class ShellViewModel : PropertyChangeBase
{
private string _name;

public string Name
{
get { return _name; }
set
{
_name = value;
NotifyOfPropertyChange(() => Name);
}
}
}

在我看来,我有一个简单的文本框。
<TextBox x:Name="Name" />

如何更改它,以便仅在 TextBox 失去焦点时更新 Name 属性,而不是每次属性更改时更新?

最佳答案

只需为 TextBox 的该实例显式设置绑定(bind)即可并且 Caliburn.Micro 不会碰它:

<TextBox Text="{Binding Name, UpdateSourceTrigger=LostFocus}" />

或者,如果您想更改 TextBox 的所有实例的默认行为, ,那么您可以更改 ConventionManager.ApplyUpdateSourceTrigger 的实现在你的 Bootstrap 的 Configure方法。

就像是:
protected override void Configure()
{
ConventionManager.ApplyUpdateSourceTrigger = (bindableProperty, element, binding) =>{
#if SILVERLIGHT
ApplySilverlightTriggers(
element,
bindableProperty,
x => x.GetBindingExpression(bindableProperty),
info,
binding
);
#else
if (element is TextBox)
{
return;
}

binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
#endif
};
}

关于wpf - 卡利本微 : how to set binding UpdateSourceTrigger?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5033308/

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