首页 > 其他分享 >WPF Textbox 控件绑定数据即时更新UpdateSourceTrigger=PropertyChanged

WPF Textbox 控件绑定数据即时更新UpdateSourceTrigger=PropertyChanged

时间:2022-08-25 11:15:38浏览次数:129  
标签:控件 PropertyChanged return object backBool UpdateSourceTrigger str var dou

 Textbox 控件绑定数据类型为 doubie类型时,如果触发条件为UpdateSourceTrigger=PropertyChanged时,无法输入小数点。

 

解决方案:

方法一:关闭数据一至检查

       System.Windows.FrameworkCompatibilityPreferences.KeepTextBoxDisplaySynchronizedWithTextProperty = false;

 

 

方法二:写转换器

public class StringToDoubleConverter : IValueConverter
  {

    private static string backValue;
    private static bool backBool;

    /// <summary>
    /// 转换值。
    /// </summary>
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
      var str = value?.ToString();
      if (string.IsNullOrEmpty(str))
        return 0d;

      var dou = str.ToNuDouble();
      if (dou is null)
      {
        return 0d;
      }
      else
      {
        if (!backBool && backValue is not null)
        {
          var l = str.Last().ToString();
          var newstr = backValue + l;
          backValue = null;
          backBool = false;
          return newstr.ToDouble();
        }
        if (backBool)
        {
          backBool = false;
        }
      }

      return dou.Value;
    }
    /// <summary>
    /// 转换值。
    /// </summary>
    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
      var str = value?.ToString();
      if (string.IsNullOrEmpty(str))
        return 0d;


      var dou = str.ToNuDouble();
      if (dou is null)
      {
        return 0d;
      }
      else
      {
        if (str.Contains("."))
        {
          backValue = str;
          backBool = true;
        }
      }

      return dou.Value;
    }
  }

 

标签:控件,PropertyChanged,return,object,backBool,UpdateSourceTrigger,str,var,dou
From: https://www.cnblogs.com/zhaoxf-nx-pm-csharp-vb-381160500/p/16623569.html

相关文章

  • vue文件夹上传控件选哪个好?
    ​需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制。 第一步:......
  • JS函数封装实现控件拖拽
    js脚本exportfunctiondragBox(drag,wrap){//用于获取父容器的样式属性值functiongetCss(ele,prop){//getComputedStyle返回值是带单位的字符串,所以......
  • WinForm代码添加控件
    1.新建Winform程序1.1拖一个FlowLayoutPanel控件属性:Dcok=Fill1.2拖一个Panel控件属性:Margin=10,10,10,10Visible=False1.3拖一个Label控件属性......
  • mfc调用ocx控件
    项目中,有时候三方公司提供ocx控件调用,下面介绍如何一步步调用。1)在任意目录存放三方ocx并进行注册和反注册测试,先保证三方ocx能注册成功reg.bat:regsvr32/uC:\xxx_......
  • WPF 在 Xaml 中设置当控件显示时夺取焦点.
    以下以一个 TextBox 为例,当其变为可见时,获得焦点 <TextBoxx:Name="TextBoxName"/><TextBox.Style><StyleBasedOn="{StaticResource{......
  • 文件上传控件-如何上传文件-文件夹下载
    ​一、功能性需求与非功能性需求要求操作便利,一次选择多个文件和文件夹进行上传;支持PC端全平台操作系统,Windows,Linux,Mac支持文件和文件夹的批量下载,断点续传。刷新......
  • C# 浏览器 Chromium 内核控件
    miniblink 精简小巧的Chromium内核控件miniblink是一款精简小巧的浏览器控件,基于chromium精简而成,是市面上最小巧的chromium内核控件没有之一。它仅10余M大......
  • 线程间操作无效: 从不是创建控件的线程访问它
    Winform跨线程调用控件时出错:线程间操作无效:从不是创建控件的线程访问它在窗体构造函数下添加 CheckForIllegalCrossThreadCalls=false;就可以忽略对跨线程的检测......
  • 文件上传控件-如何上传文件-文件夹上传
    ​第一点:Java代码实现文件上传FormFilefile=manform.getFile();StringnewfileName= null;Stringnewpathname= null;StringfileAddre= "/numUp";try{ ......
  • INotifyPropertyChanged
    C#-INotifyPropertyChanged(解决数据绑定的界面刷新问题)最近做项目用到DataGridView(property同理),用它绑定数据源后,如果数据源中的数据修改无法及时刷新到控件上,必须切换......