检查两个 DecimalUpDown 控件之间的有效值 - MVVM

2024-02-23

我的窗口中有两个 DecimalUpDown 控件。一个应显示文本框的最大值,另一个应显示最小值。 最小控制值不能大于最大控制值,反之亦然。

请注意,红色值是错误的。

我怎样才能实现这个?我正在使用 MVVM 模式。

谢谢。 史蒂夫


您应该在视图模型中实现验证逻辑:

public class MyViewModel : IDataErrorInfo
{
    private int _min;
    public int Min
    {
        get { return _min; }
        set { _min = value; }
    }

    private int _max;
    public int Max
    {
        get { return _max; }
        set { _max = value; }
    }

    public string Error { get { return null; } }

    public string this[string columnName]
    {
        get
        {
            switch(columnName)
            {
                case "Min":
                    if (_min > _max)
                        return "Min cannot be greater than Max";
                    break;
                case "Max":
                    if (_max < _min)
                        return "Max cannot be smaller than Min";
                    break;
            }

            return null;
        }
    }
}

XAML:

<xctk:IntegerUpDown Value="{Binding Min,ValidatesOnDataErrors=True}" />
<xctk:IntegerUpDown Value="{Binding Max,ValidatesOnDataErrors=True}" />

请参阅以下博客文章,了解有关 WPF 中数据验证如何工作的更多信息:https://blog.magnusmontin.net/2013/08/26/data-validation-in-wpf/ https://blog.magnusmontin.net/2013/08/26/data-validation-in-wpf/.

您基本上实现了IDataErrorInfo或较新的INotifyDataErrorInfo在你的视图模型中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查两个 DecimalUpDown 控件之间的有效值 - MVVM 的相关文章

  • 无法使用c#更改视频捕获分辨率

    我正在尝试使用 C 中的 DirectShowNet 更改默认网络摄像头分辨率 据我所知 我需要通过调用 windows win32 api dll 中内置的 VideoInfoHeader 类来更改它以进行 avi 捕获 我有来自 Dir
  • 按钮 VisualState Focused 不起作用

    我试图在单击按钮时更改按钮的字体颜色 我尝试了很多不同的方法 但没有一个有效 这是我尝试过的最新方法 我认为应该是答案 但它不起作用 有人可以帮忙吗 PointerOver 工作正常 但单击按钮时 Focused 没有执行任何操作
  • 更新 Azure Blob 上的 LastModified

    我正在移植代码以使用 C 中的 Azure 存储 SDK 传统上 我称其为更新修改文件的上次写入 修改时间 File SetLastWriteTimeUtc fileName lastWriteTimeUtc 要更新 blob 的上次修改时
  • 如何通过覆盖 MSBuild 目标来防止外语资源生成?

    我正在致力于减少大型 C ASP NET 解决方案的编译时间 我们的解决方案使用通常的 resx 文件方法翻译成大约十几种外语 这些资源文件的解析和编译极大地减慢了我们的编译时间 并且是日常的挫败感 我知道可以创建自定义资源提供程序并摆脱
  • C# 中类似图的实现

    所以我有一个对象 我们称之为 Head 它有一个对象列表 C C1 C2 C3 T T1 T2 和 M M1 M2 并且所有这些都是相互关联的 例如 Head gt C1 C2 C3 T1 T2 M1 M2 T1 gt C1 C2 T2 g
  • 预编译头和 Visual Studio

    有没有办法设置 Visual Studio 解决方案参数 以便它只创建预编译头而不构建整个解决方案 具体来说 它是一个巨大的 C 解决方案 本身有许多项目 谢谢 仅选择 pch 创建者源文件 通常是 stdafx cpp 然后编译该文件 C
  • 如何在 Visual Basic DLL 和 C++ DLL 之间创建隔离/免注册 COM?

    我必须在 C DLL 中使用 VB COM DLL 我弄清楚了如何从 C DLL 访问 VB COM DLL 并且它可以工作 现在我遇到了一个问题 我必须使用隔离的 COM 免注册 COM 因为我无法在必须使用它的每台 PC 上注册 DLL
  • 检测反射 DLL 注入

    在过去的几年中 恶意软件 以及一些渗透测试工具 如 Metasploit 的 meterpreter 负载 已经开始使用反射 DLL 注入 PDF http www harmonysecurity com files HS P005 Ref
  • ASP.NET MVC 动作过滤器

    有谁知道即使在 CATCH 块中 ActionFilterAttribute 类的 OnResultExecuted 方法是否也会执行 ie CookiesActions public ActionResult Login Usuarios
  • 如何在 C++ 运行时更改 QML 对象的属性?

    我想在运行时更改 QML 对象的文本 我尝试如下 但文本仍然为空 这是后端类 class BackEnd public QObject Q OBJECT Q PROPERTY QString userFieldText READ userF
  • 查找方法不适用于 EF6.1 模拟

    我已经使用这些 msdn 指南设置了模拟 使用模拟框架进行测试 EF6 及以上 http msdn microsoft com en us data dn314429 var bsAc db BusAcnts FirstOrDefault
  • 使用 OleDbCommand / OleDbDataAdapter 读取 CSV 文件

    我不明白为什么 但是当我使用 OleDbDataAdapter 或 OleDbCommand 读取 CSV 文件时 在这两种情况下 生成的数据结构良好 它识别文件头中的列 但行数据都是空字符串 我之前已经成功进行过多次 CSV 处理 因此我
  • 如果finally 块包含await,为什么*有时*不会在ThreadAbortException 上执行?

    UPDATE 我不认为这个问题是重复的ThreadAbortException最后可以跳过吗 https stackoverflow com questions 18002668 can threadabortexception skip
  • linq where 子句和 count 导致 null 异常

    除非 p School SchoolName 结果为 null 否则下面的代码将起作用 在这种情况下 它会导致 NullReferenceException if ExistingUsers Where p gt p StudentID i
  • 应在堆栈上分配的最大数量

    我一直在寻找堆栈溢出有关应在堆栈上分配的最大内存量的指南 我看到了堆栈与堆分配的最佳实践 但没有关于应该在堆栈上分配多少以及应该在堆上分配多少的指南 有什么想法 数字可以作为指导吗 什么时候应该在堆栈上分配 什么时候应该在堆上分配 多少才算
  • 如何释放字符串未使用的容量

    我正在程序中处理很多字符串 这些字符串数据在读入我的程序后的整个生命周期内都不会改变 但由于 C 字符串保留了容量 因此浪费了大量肯定不会被使用的空间 我尝试释放这些空间 但没有成功 以下是我尝试过的简单代码 string temp 123
  • 'iter' 的名称查找已更改为新的 ISO 'for' 范围

    我正在尝试编译下面的两个文件 但从编译器收到错误消息 gcc 4 3 3 Linux 错误位于带有以下符号的行 LINE WITH ERROR 我做错了什么 我该怎么改变 路易斯 g c b h b cpp b cpp In functio
  • 基础设施 - 同步和异步接口和实现? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在实现库 基础设施时 并且该 API 的用户希望同步和异步使用代码 我读到混合同步和异步并不是一个好主意 例如 同步实现包括等待异步实现 显然
  • 如何在控制台程序中获取鼠标位置?

    如何在 Windows 控制台程序中用 C 获取鼠标单击位置 点击时返回鼠标位置的变量 我想用简单的文本命令绘制一个菜单 这样当有人点击时 游戏就会注册它并知道位置 我知道如何做我需要做的一切 除了单击时获取鼠标位置 您需要使用 Conso
  • 如何根据当前日期时间发现财政年度?

    我需要基于当前或今天的日期时间的财政年度 假设我们认为今天的日期是10 April 2011 那么我需要输出为Financial Year 2012在某些情况下 我需要以短格式显示相同的输出FY12 我想以两种方式显示 在我们的要求中 考虑

随机推荐

  • Debian 9 + PHP7.0-FPM + NGINX 1.10.3-1 path_info 问题

    我正在使用 DigitalOcean Debian 9 PHP 7 0 NGINX 1 10 3 1 并尝试安装 Joomla CMS 但在第一个安装屏幕 example com installation index php 上 我注意到一
  • Selenium + Java 的 elementToBeClickable 问题

    所以 我有一个隐藏在警报下的元素 警报持续 10 秒 之后用户可以单击该元素 这是我处理这种情况的代码 WebElement create driver findElement By cssSelector div action menu
  • C# 根据 XSD 验证 XML [重复]

    这个问题在这里已经有答案了 可能的重复 使用 XSD 架构进行 Xml 验证 https stackoverflow com questions 572853 xml validation using xsd schema 我使用一些 C
  • 组合 ggplot2 对象时设置拼凑中的轴限制

    组合时ggplot2对象使用拼凑而成 https patchwork data imaginist com index html我希望能够有一个选项 可以轻松地为所有图设置一个选项 使其具有相同的 x 轴和 或 y 轴范围 reprex l
  • Busboy 文件上传中出现“Unexpected end of multipart form”错误

    我正在使用 Busboy 在 Node Express 应用程序中上传文件 我收到错误Unexpected end of multipart form和应用程序崩溃 每当我尝试治疗失眠的方法时 都没有效果 在显示 Busboy 不是构造函数
  • 创建 Uri uri 时应用程序崩溃

    package com example renu customlead import android content Context import android content ContextWrapper import android
  • 如何将参数发送到流中的引用方法(java 8)?

    我有一个活动列表 Activity 我想确定表单的数据结构Map String DateTime 不是持续时间或期间 DateTime这是必须的 映射 对于每项活动 在监控期间计算的总持续时间 班级活动有 activityLabel Str
  • 启用 viewBinding 功能失败(Android Studio 3.6)

    我已经安装了 Android Studio 3 6 Canary 12 并且我想使用viewBinding feature 根据文档 我将此代码放入我的 build gradle 应用程序模块 中 android viewBinding e
  • R 闪亮应用程序的 twitter bootstrap 弹出窗口 - html 被解释为文本内容 - 为什么?

    我想将 Twitter 引导框架中的弹出窗口添加到闪亮的应用程序中 一切正常 除了 认为html true标签没有效果 shinyUI pageWithSidebar headerPanel Header sidebarPanel acti
  • 如何跟踪服务 firebird

    如何使用delphi xe10跟踪服务firebird服务器的所有事件 这是我的代码 my TIBControlService Create Self my ServerName 127 0 0 1 3050 my Protocol TPr
  • Subversion 快速解决所有冲突

    当我遇到多个冲突时 有没有办法通过告诉 SVN 保留存储库中的版本来解决所有冲突 不幸的是 我们仍在使用 1 4 我相信如果你运行命令svn revert R 您基本上撤消了对工作副本的所有更改 如果存在冲突的文件 SVN 会放弃您的更改并
  • 使用时初始化缓存

    假设我有以下事件 做一点事 取东西 获取成功的东西 DoSomething做一些需要一些缓存数据的事情 当我触发事件时 我想查看缓存并对其执行某些操作 如果存在 如果没有 那么我想获取它 等待它进入缓存 然后重试 我想出了以下解决方案 但感
  • 在 C 中以均匀概率有效地从文本文件中选择随机行?

    这本质上是一个更受限制的版本这个问题 https stackoverflow com questions 232237 whats the best way to return a random line in a text file us
  • 3d -> 1D 数组索引

    在 C 中 W H D 大小的 3D 数组的索引值是多少 对于特定的 i j k 这是正确的索引 i 宽 高 j 宽 k 您所编写的内容相当于执行以下操作的指针算术 T x D H W x i j k Pointer arithmetic
  • 将数据发送到后台运行的活动

    在活动之间传递数据时遇到问题 ListActivity 正在收集数据 当按下后退按钮时返回到 MainActivity 然后想要通过 onResume 方法获取该数据 但我什么也没得到 如何解决这个问题呢 列表活动 java Overrid
  • Git 在结帐时更改我的文件权限

    我们的工作流程是在本地计算机上开发 将更改提交到中央存储库 然后检查我们需要的该存储库的分支 问题是 Git 会根据签出的用户更改其签出的文件的所有权甚至文件权限 这样做的直接结果是 我们的 CSS 文件在签出后变得不可读 因为 Git 将
  • 使用 C# 命令行 GPG 解密 - 密码?

    我正在使用命令行来加密我发送的文件 但我正在尝试找出如何使用相同的方法来解密它们 如果我运行该命令 系统会提示输入密码 但我看不到使用命令行传递密码的方法 这是我加密文件的方法 var proc new Process proc Enabl
  • 如何从计算引擎访问谷歌驱动器

    我以前没有使用过 GCE 但计划将其用于一些 CPU 绑定的 R 脚本 我看到定价的网络部分说谷歌驱动器有免费的出口和入口 我没有看到任何有关如何从 GCE 中访问我的 google 驱动器的文档 有人可以向我指出这方面的文档吗 我建议使用
  • 两个相同的unordered_map的顺序是否相同?

    换句话说 如果我填两个unordered map or unordered set 具有完全相同内容和相同哈希函数的对象 迭代它们会给出相同的键 值对序列吗 如果是这样 那么它成立的条件是什么 例如相同的散列函数 相同的键 不一定是相同的值
  • 检查两个 DecimalUpDown 控件之间的有效值 - MVVM

    我的窗口中有两个 DecimalUpDown 控件 一个应显示文本框的最大值 另一个应显示最小值 最小控制值不能大于最大控制值 反之亦然 请注意 红色值是错误的 我怎样才能实现这个 我正在使用 MVVM 模式 谢谢 史蒂夫 您应该在视图模型