我希望能够覆盖转换的默认文本框验证并自行处理。我已经查看了验证规则,但我无法让它禁用原始验证。 Xaml到目前为止:
<Grid>
<TextBox Text="{Binding Path=Option.Value, NotifyOnSourceUpdated=True}" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="SourceUpdated">
<i:InvokeCommandAction Command="{Binding OptionValueChanged}"></i:InvokeCommandAction>
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>
</Grid>
Atm,当输入一个字符串时,它显示'Value {val}无法转换',因为该字段是一个整数。如何禁用它来自己处理这个值?
答案 0 :(得分:3)
private static readonly Period LoginExpiredPeriod = ...;
...
// Assuming lastLoginDate and currentDate are LocalDate values
if (lastLoginDate + period >= currentDate)
{
...
}
属性只能设置为int
值而不能设置为其他值。您可以自定义错误消息,但您无法将int
属性设置为除int
之外的其他属性。
有关如何使用自定义int
自定义错误消息的示例,请参阅此处的答案:
How do I handle DependencyProperty overflow situations?
如果您想自己处理ValidationRule
和string
之间的实际转换,可以使用转换器:
int
<Window.Resources>
<local:YourConverter x:Key="conv" />
</Window.Resources>
...
<TextBox Text="{Binding Path=Option.Value, NotifyOnSourceUpdated=True, Coverter={StaticResource conv}}" / >
答案 1 :(得分:0)
我遇到了同样的问题,添加 TargetNullValue=''
不起作用。添加一个像这里接受的答案一样的转换器表明它不起作用。但是,就我而言,问题出在 ContactId
上,当客户 ComboBox 更改时,它会填充联系人。当 Contacts ObserveableCollection<Contact>.Clear()
被调用时,它抛出了这个错误。
我的修复是确保在调用 ContactId
和 ObserveableCollection<Contact>.Clear()
之前 ObserveableCollection<Contact>.Add(contact)
已更改。