我有一个整数更新的wpf工具包控件。我可以使用箭头键更改值,并能够明确键入它。但是在更改值之后,如果我将焦点移开,则值变为零。
任何帮助将不胜感激。谢谢!
<wpftlkit:IntegerUpDown Grid.Column="1" Margin="6" VerticalAlignment="Center" Increment="1" Maximum="7"
Value="{Binding ValueH, Mode=TwoWay, UpdateSourceTrigger=LostFocus}" Style="{StaticResource StyleErrorTemplate}"
IsEnabled="{Binding IsEnabled}" Visibility="{Binding Visibility}" />
答案 0 :(得分:0)
我怀疑这个问题是一个具有约束力的问题。在失去焦点之前,实际值不会更新(由于你的UpdateSourceTrigger),此时破坏的绑定或绑定到强制值返回零的属性会产生这种行为。
答案 1 :(得分:0)
这是Toolkit的工作方式。要在用户键入超出Min-Max范围的值时将值更改为最大值或最小值,应下载WPF Toolkit源(http://wpftoolkit.codeplex.com/SourceControl/changeset/view/98195)并更改文件夹 Xceed.Wpf中的文件CommonNumericUpdown.cs。 Toolkit / NumericUpDown / NumericUpDown 如下所示。 注意抛出异常之前的行,添加它们。
private void ValidateDefaultMinMax( T? value )
{
// DefaultValue is always accepted.
if( object.Equals( value, DefaultValue ) )
return;
if (IsLowerThan(value, Minimum))
{
Value = Minimum;
throw new ArgumentOutOfRangeException("Minimum", String.Format("Value must be greater than MinValue of {0}", Minimum));
}
else if (IsGreaterThan(value, Maximum))
{
Value = Maximum;
throw new ArgumentOutOfRangeException("Maximum", String.Format("Value must be less than MaxValue of {0}", Maximum));
}
}