我有一个整数向上向下的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}" />发布于 2011-11-11 02:28:32
我怀疑这个问题是一个具有约束力的问题。实际值不会被更新,直到你失去焦点(由于你的UpdateSourceTrigger),在这一点上,一个被破坏的绑定或一个强制值回到零的属性绑定就会导致这种行为。
发布于 2013-02-20 21:24:20
这就是工具包的工作方式。要在用户键入的值超出最小-最大界限时将值更改为最大值或最小值,您应该下载WPF Toolkit源代码(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));
}
}https://stackoverflow.com/questions/8084364
复制相似问题