繁体   English   中英

WPF DataGrid - 带有 PropertyChanged 的​​ DataGridTextColumn 十进制/双精度/浮点数输入

WPF DataGrid - DataGridTextColumn decimal/double/float input with PropertyChanged

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我在 DataGridTextColumn 中使用 UpdateSourceTrigger=PropertyChanged 处理十进制(双精度/浮点数)输入时遇到问题。

(1) 我搜索了几个站点,许多站点建议将其更改为 LostFocus。 我不太热衷于这个实现,因为 PropertyChanged 的​​行为正是我所需要的。 除非有办法用 LostFocus 获得相同的结果??

我已阅读有关 stackoverflow 的以下文章 - Link 1 , Link 2 , Link 3 , Link 4 , Link 5 & Link 6

(2) 使用Binding="{Binding StringFormat=N2}"或其变体具有非常烦人的行为,如链接 4中的注释中所述。

(3) 另一种方法是允许字符串输入,在后端解析为double。 这很好,我只是把它作为最后的解决方案。

(4) 最后在同一个链接 4中,xmedeko 提到了一个解决方案 - System.Windows.FrameworkCompatibilityPreferences.KeepTextBoxDisplaySynchronizedWithTextProperty = false; 仅适用于 .NET 4.5 或更高版本。

我确实有较新的版本,但不确定如何/在何处实现这行代码。 或者是否有办法在 XAML 本身中将此属性设为 false? 任何帮助是极大的赞赏。 由于我的声誉级别,无法回复对该链接的评论。

如果在保持与 PropertyChanged 类似的行为的同时还有其他更简洁的方法,将会非常有帮助。

代码
XAML - <DataGridTextColumn Header="Rate" Binding="{Binding Path=Rate, UpdateSourceTrigger=PropertyChanged}" Width="90"/>

CS -

public void NotifyPropertyChanged(string property)
{
   PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(property));
}

public double Rate
{
   get { return rate; }
   set { rate = value; NotifyPropertyChanged("Rate"); }
}

代码其实很简单。 这显示在数据网格上。 DataGridTextColumn 不接受十进制值,Chevul Ervin 在链接 2 中正确指出了这一点 -

UpdateSourceTrigger=PropertyChanged 在每次击键时重新评估文本。 以小数点结尾的数字无效。 将 UpdateSourceTrigger 更改为 LostFocus(与删除它相同)或尝试键入“.” 而后面还有其他数字。

2 个回复

一个老问题,但我想分享一个奇怪的解决方案:) 通过“ UpdateSourceTrigger=LostFocus ”更改“ UpdateSourceTrigger=PropertyChanged ”将允许十进制值。

我做了很多研究,但没有找到解决方案。 所以使用选项 3 - 允许字符串输入并在后端处理它。

3 如何使C编译器假定十进制文字(例如1.23)是浮点型而不是双精度型?

在我的源代码中,如果我将1.23作为文字编写,例如doThis(1.23),则gcc假定它是双精度型。 除了在单独的源文件中另行指定之外,还有没有方法将do浮点数用作常量/常量,而不是键入doThis((float)1.23)? 巨型积分,有没有一种方法可以(几乎)在每个C编译器中使 ...

4 解析浮点,十进制或双精度

我正在重写我们的平面文件解析器,从非通用的,面向属性的事物到更现代的流利语法事物。 我在想出一种处理浮点数的好方法时遇到问题 鉴于此DTO 而这个平面文件 您可以这样配置映射 反序列化 这将导致foo对象的属性值为123456.1234 我为此有工作 ...

6 数字十进制忽略,变量为浮点型

使用SQLAlchemy 1.3.5,Postgres 9.6和Python 3.6.8,通过price = Column(Numeric(asdecimal=True))将模型上的字段定义为Decimal ,但是打印出模型的类型则显示为float: 如何获取SQLAlchemy以使用D ...

8 在 cassandra 中何时使用十进制与浮点/双精度?

我正在使用 apache cassandra 3.x 版本。 我对什么时候应该使用小数和浮点类型感到有些困惑? 是否有任何特定的用例/差异何时应该使用浮点数或避免小数点,反之亦然? 我已经完成了一些快速教程,但没有涵盖这种差异。 谁能帮我理解这一点? ...

9 32位十进制数的浮点/双精度分析

从另一个人的.c文件中,我看到了这个: 他想避免计算sqrt(1/2) 。 这可以用普通的C/C++以某种方式存储吗? 我的意思是没有失去精确度。 对我来说似乎不可能。 我正在使用C ++,但我不相信这两种语言之间的精确差异太大(如果有的话),那就是为什么我没有测试它。 ...

10 在存储和内存方面为浮点型或双精度型

我正在解析不是我的主要关注点的数据。 即使使用最大Java堆大小,我也经常会收到java.lang.OutOfMemoryError。 因此,我主要关心的是内存使用情况和Java堆空间。 我应该使用double还是float数据类型? ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM