我被困在这里了。
我需要的是,我有一个TextBox
,它只能有-999
到999
的值,我试过这样设置边界。
<TextBox Height="{Binding ElementName= SomeComboBox, Path=ActualHeight}"
VerticalAlignment="Top"
Tag="int"
HorizontalAlignment="Stretch"
MaxLength="4"
Margin="2, 4, 0, 0"
AutomationProperties.AutomationId="Something_cbSome">
<i:Interaction.Behaviors>
<behaviors:TextBoxIntInputBehavior AllowNegative="True" />
</i:Interaction.Behaviors>
<TextBox.Text>
<Binding Path="Something"
UpdateSourceTrigger="PropertyChanged"
TargetNullValue="">
<Binding.ValidationRules>
<validation:IntRangeRule Min="-999"
Max="999" />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
但是很明显,现在有人可以输入4位数,因为MaxLength
的值是4
。例如1234
,它比999
高。
此外,这还允许我输入---
、8--2
等内容。
预期可接受值:-999
到999
。不多也不少。我该怎么做?
3条答案
按热度按时间pw136qt21#
答案是:
1.您也可以使用滑块(另一个控件,它是坏的)
1.或者,您可以在另一个问题中看到ValidationRule类:ValidationRule for WPF Textbox
再利用它!
g6ll5ycj2#
您可以处理Textbox的PreviewTextInput事件,使其仅接受minus和int作为第一个字符,并且仅接受-999到999之间的值。这可能是一个简单的替代方法,可以满足您的需要。
zengzsys3#
我建议将逻辑放入视图模型中:
我在这里使用了两个属性,一个用于原样文本,另一个用于经过验证的值。
XAML代码如下所示: