1

我有一个整数 updown 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}" />
4

2 回答 2

0

我怀疑这个问题是一个有约束力的问题。直到您失去焦点(由于您的 UpdateSourceTrigger),实际值才会更新,此时绑定损坏或绑定到强制该值归零的属性会产生这种行为。

于 2011-11-10T18:28:31.580 回答
0

这是 Toolkit 的工作方式。当用户输入超出 Min-Max 范围的值时,要将值更改为最大值或最小值,您应该下载 WPF 工具包源 ( http://wpftoolkit.codeplex.com/SourceControl/changeset/view/98195 ) 并更改文件文件夹Xceed.Wpf.Toolkit/NumericUpDown/NumericUpDown中的 CommonNumericUpdown.cs 如下所示。注意抛出异常之前的行,它们是被添加的。

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));
  }
}
于 2013-02-20T13:24:19.853 回答