我使用 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 相同的方式。
提前感谢您的任何建议。