WPF RibbonTextBox数据绑定为double

时间:2012-10-06 18:47:14

标签: wpf

我使用VS2012 Express附带的默认WPF功能区 当RibbonTextBox数据绑定到viewmodel中的双重属性时,它会显示值1.75,它会显示它并且允许修改小数点分隔符周围的数字,而不会将其设置为红色,就像输入非数字字符(例如'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)根据this SO问题覆盖应用程序区域设置后,将显示正确的Windows文化分隔符,但也无法输入。

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

提前感谢任何建议。

1 个答案:

答案 0 :(得分:0)

答案隐藏在SO Article中。

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

嗯,MS有理由做这个改变,所以让我们记住它。