问题标签 [updatesourcetrigger]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1316 浏览

wpf - 具有数据绑定计算值的 TextBlock 未更新

我有一个文本块,它绑定到我的 JobItem 类中名为“AdminTime”的双重属性。AdminTime 计算在名为 TimeLog 的 observablecollection 中的总管理时间。我使用文本框将这些管理时间添加到 JobItem 类中。这是按比例缩小的代码:

对于后面的代码,我有 addTime 按钮单击处理程序。请注意,我知道我的 UpdateSourceTrigger 已经是显式的,我不应该更新我的源代码,但我只是在检查它是否有助于解决我的问题:

在我的 JobItem 类中,我有以下代码:

当我退出窗口然后重新打开它时,我的文本块确实绑定了,我想要的是在单击 addAdBtn 后更新我的文本块。我不想打开对话框才能看到我的管理时间文本块和按钮,添加时间,关闭对话框,然后再次重新打开以查看更新的文本块。

0 投票
2 回答
1667 浏览

wpf - 如何在 UserControl 中实现 DependencyProperty 以更新 LostFocus 上的源?

我正在实现一个UserControl名为 PhoneBox,它包含一个单一的TextBox、一些自定义逻辑,并且有一个名为 PhoneNo 的 DependencyProperty。LostFocus它将在带有for的双向绑定场景中使用UpdateSourceTrigger。所以我写了以下代码 -

XAML(用户控件):

代码隐藏(用户控件):

XAML(消费者):

有用。但我的问题是,我使用txtPhone_LostFocus事件处理程序设置属性值(进而更新源)的方式是否合适?有没有更合适的方法来做到这一点?我是这个DependencyProperty东西的新手,所以任何指导,建议,评论将不胜感激。

0 投票
2 回答
895 浏览

.net - WPF 转换器的 MultipleBinding... ConvertBack 何时被调用?

我有一个带有一组值的组合框。所选值由具有多个双向绑定的 Converter 确定。当用户更改 ComboBox 中的值时,我希望调用 ConvertBack 方法并更改多重绑定中使用的两个属性的值,但这不会发生,即使 ComboBox 失去焦点也是如此。我试图将 UpdateSourceTrigger 属性更改为“LosesFocus”,但这显然对 MultipleBinding 无效。如何在值更改或控件失去焦点时触发 ConvertBack 方法?任何一个都可以满足我的目的。

XAML:

0 投票
1 回答
449 浏览

c# - 不同的 UpdateSourceTriggers 用于绑定方式

我不知道我如何实现一种特殊行为。我有一个包含两列的数据网格的视图。一列显示格式化价格(“00.00”)。当绑定更新(属性设置)时,价格将自动保存。如果我使用 UpdateSourceTrigger=PropertyChanged,价格总是正确的。此触发器的缺点是,如果用户选择文本框中的所有文本并仅键入“1”,则价格将格式化为“01.00”。我不希望价格自动形成。只有当焦点移到其他对象时,才会出现该格式。

理论上我需要设置两个不同的UpdateSourceTrigger。一种用于更新后端(用户在文本框中输入内容)。还有一个用于更新目标(焦点移动到另一个对象)。另外,如果新值无效,我需要立即显示。

编辑:我会给你一个小例子:如果我将绑定的 Price 属性设置为“1”,它将自动格式化为“01.00”。如果 UpdateSourceTrigger=PropertyChanged,TextBox 将显示“01.00”。只要 TextBox 聚焦,我希望 TextBox 显示“1”。当然,我会通过 UpdateSourceTrigger=LostFocus 获得这种行为。这里的问题是,DataGrid 包含在 TabControll 中,并且两个控件不能很好地协同工作。如果您在焦点仍在 TextBox 上时选择其他选项卡,则 TextBox 不会抛出 LostFocus。

希望你们中的一些人对我有建议:-)

安德烈

0 投票
1 回答
779 浏览

wpf - 不同来源的不同 UpdateSourceTriggers?

我有一个 WPF 文本框,其 Text 属性绑定到数据源。我还将第二个 TextBox 的 IsEnabled 属性绑定到第一个文本框的 Text.Length 属性,以便在第一个框中没有输入任何内容时禁用第二个框。问题是我希望文本源在属性更改时更新,但 IsEnabled 仅在失去焦点时更新,但我只能为文本正确定义一个 UpdateSourceTrigger。

解决此问题的一种方法是手动启用和禁用先前文本框失去焦点事件的文本框。但是,由于有很多这样的文本框,每个文本框的 IsEnabled 都绑定到前一个框的 Text 属性,这会很混乱。我想知道在 Xaml 中是否有更清洁的方法来执行此操作。

在这里,我希望 box2 的 IsEnabled 属性在 box1 失去焦点时更新,但 textSource1 在 box1 上的 Text 属性更改时更新。

0 投票
3 回答
1744 浏览

c# - 何时为 ItemsControl 调用 ConvertBack?

我有以下项目数据类,以及一个转换器。

我将 的实例绑定ListBoxData到列表框控件的ItemsSource. 如下:

所以我的问题是,Convert当列表框显示时调用该函数,但是由于此列表框中的每个项目都是一个复选框,虽然我使用TwoWay绑定来绑定实例和列表框,但是ConvertBack当我选中/取消选中复选框时不会调用这个列表框。

我不确定是否ConvertBack设计为按预期工作。但是,如果我想ConvertBack在检查状态更改时触发可以,我该怎么办?

0 投票
0 回答
188 浏览

silverlight - Silverlight 控件在不应该更新绑定属性时更新

我在 datagrid 中有一个自定义控件DataGridTemplateColumn.CellEditingTemplate

在控制范围内,我只有一个地方可以更新SelectedObject依赖属性:

此代码在LostFocus事件上调用。

问题是: whileUpdateSource方法只被调用一次(用调试器检查)SelectedItem获得更新值(相同)两次!我目前处于亏损状态,因为它不应该是这样的。我错过了什么吗?

编辑:我没有使用任何 MVVM 框架。VS2012 调试调用堆栈显示第一次更新是由 UpdateSource() 调用发起的,但第二次更新突然出现。

0 投票
1 回答
3062 浏览

wpf - Wpf 文本框转换器与 updatesourcetrigger=propertychanged 结合使用加倍

在我们的项目中,我们有一个绑定到双精度的 WPF 文本框。有一个转换器允许在转换回中例如同时使用“.”。和“,”作为小数点,并在转换方法中将双精度格式化为 n2 数字格式。在这里您可以看到我们转换器的简化版本:

文本框如下所示:

并且双重属性引发了一个 propertychanged 事件:

这在以前版本的 WPF 中可以正常工作,因为在输入文本时没有调用转换。这种行为显然已经改变,现在在每个文本条目上调用转换方法,导致在您键入内容时对双精度进行格式化。即使您不使用格式化,您也会遇到无法输入小数点的问题。

这可以通过不使用 UpdateSourceTrigger=Propertychanged 来解决,但我们需要它进行验证。我们使用 IDataErrorInterface 实现验证。我知道有一个ValidateWithoutUpdate 方法,但这不适用于使用 IDataErrorInterface 进行验证。

所以我基本上需要的是ConvertBack(以及验证)发生OnPropertyChanged,而Convert只发生OnLostFocus。
这可能吗?或者我们的问题有其他解决方案吗?

0 投票
0 回答
1136 浏览

wpf - WPF 组合框更新源触发器

我为组合框添加了触发器,即

  • 当组合框为“禁用”时,“文本”属性应设置为“1”并将 updatesourcetrigger 添加到属性更改。

  • 当组合框为“启用”时,应选择“文本”属性,并将更新源触发器添加到属性更改。

但问题是当组合框被禁用并且“文本”属性设置为“1”时,我无法调用更新源触发器。

下面是 XAML 代码片段:

从上面的 XAML 代码中,当我将组合框“禁用”模式的“文本”属性更新为“1”时,我需要将此“1”值更新为源属性,即“标签”,然后从那里更新为“NoOfIntervals”,但它没有没有发生。

谢谢,纳格

0 投票
1 回答
69 浏览

c# - 通过更改键盘上的值也发生了绑定

我有一个combobox绑定到以下列表的:

所选项目绑定到下一个对象:

在组合框之后:

我希望绑定仅在失去焦点时发生,并且在使用键盘键更改值时发生。因此UpdateSourceTrigger=LostFocus

我的问题是如何通过更改键盘的值来进行绑定?