wpf toolkit整数更新不会在lostfocus上保留值

时间:2011-11-10 18:21:25

标签: wpftoolkit lostfocus

我有一个整数更新的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}" />

2 个答案:

答案 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));
  }
}