首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何验证绑定的依赖于值的WPF TextBoxes,以及如何根据验证启用/禁用Ok按钮

如何验证绑定的依赖于值的WPF TextBoxes,以及如何根据验证启用/禁用Ok按钮
EN

Stack Overflow用户
提问于 2011-06-27 16:35:55
回答 2查看 525关注 0票数 0

我在c# WPF窗口应用程序上有两个文本框和两个按钮。

应用程序有一个称为Total Amount的变量。一个文本框用于表示折扣百分比,另一个用于表示折扣金额。如果我更改了折扣金额,那么百分比应该在WPF中使用DataBinding反映出来,反之亦然(我有)

我想验证两个文本框1)。折扣应在最小值到最大值2的范围内。折扣金额不应大于总金额

然后,确定按钮将根据验证显示为启用/禁用

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-28 01:01:38

我建议您采用MVVM模式(如果您还没有这样做的话),并将验证逻辑包含在视图模型中。使用此方法,您可以:

  • 公开视图模型上的IsValid属性并将其绑定到按钮;属性getter将返回验证逻辑的结果
  • 公开视图模型上的ICommand,该视图模型的CanExecute方法将返回验证逻辑的结果(推荐)

一个简单的例子:

代码语言:javascript
复制
public class DiscountViewModel : ViewModel // Base class implements INotifyPropertyChanged
{
  // Define all of your view model properties, i.e., DiscountAmount, DiscountPercent, etc.

  ...

  // Define a command

  public ICommand OKCommand { get; }
}

然后,在您的XAML视图中,添加以下绑定:

代码语言:javascript
复制
<Button Command={Binding Path=OkCommand} Content="OK" />

同样,这只是一个简短的示例,应该可以帮助您找到正确的方向。有大量关于MVVM模式和WPF命令模式的资源可用。这里有一个很好的介绍性资源,涵盖了这两个方面:http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

票数 0
EN

Stack Overflow用户

发布于 2011-06-27 18:06:29

对于您定义的每个绑定,都可以添加一个Converter。这个can转换器可以是单值转换器,然后你必须实现IValueConverter接口。但我认为你可以用IMultiValueConverter解决你的问题。这个Converter可以被赋予很多值,这些值也可以从绑定中获得。Converter从绑定中获取值,用您的逻辑处理它们,然后将其返回给您定义它的属性。http://msdn.microsoft.com/en-us/library/system.windows.data.imultivalueconverter.aspx

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6490365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档