1

我使用 VS2012 Express 附带的默认 WPF 功能区。
当 RibbonTextBox 数据绑定到由值 1.75 初始化的视图模型中的 double 属性时,它会显示它并允许修改小数点分隔符周围的数字,而不会像输入非数字字符(如“x”等)时那样将其框为红色
。 但是一旦小数点分隔符已删除,无法将其键入回 RibbonTextBox。它接受无意义的字符,但不接受小数分隔符。换句话说,删除小数点分隔符后,它的行为更像是数据绑定到 int。

XAML

xmlns:rib="http://schemas.microsoft.com/winfx/2006/xaml/presentation/ribbon"
...
<StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" >
<Label Content="Source Gamma " />
<rib:RibbonTextBox Text="{Binding SrcGamma, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="50"/>
</StackPanel>

后面的 C# 代码

public double SrcGamma { get; set; } // initialised to 1.75d

注1:首先,我怀疑这是一个文化问题。我的 Windows 文化 (cs-CZ) 使用“,”小数点分隔符,但我的应用程序显示“。” 分隔器。
a) 将 Windows 文化分隔符设置为“。” 没有帮助。
b)根据SO question 覆盖应用程序区域设置后,将显示正确的 Windows 文化分隔符,但也无法输入。

注意 2:在我的调查中,我添加了一个标准的 TextBox(在功能区之外)。在向其添加自定义双重验证规则后,它开始表现与提到的 RibbonTextBox 相同的方式。

提前感谢您的任何建议。

4

1 回答 1

0

答案隐藏在这篇SO 文章中。

奇怪的行为是由我曾经在 .NET 3.5 中使用的UpdateSourceTrigger=PropertyChanged引起的,它以预期的方式运行。删除后,现在可以毫无问题地添加小数分隔符。

好吧,MS 有理由进行此更改,所以让我们牢记这一点。

于 2012-10-08T19:05:09.597 回答