【发布时间】:2020-05-15 03:30:43
【问题描述】:
我有一个链接到双精度的文本框?在我的后端视图模型中。我需要在清空 TextBox 时触发 ConvertBack,但验证规则“ValidateNotNullOrWhiteSpace”失败,因此没有调用 ConvertBack。我的问题是,当我清空文本框时,我希望 viewModel 为空。现在 viewModel 保留旧值示例 10。
有没有办法在 ValidationRules 失败时强制绑定?
<TextBox x:Name="txtSlabDepth" Grid.Row="0" Grid.Column="1" Margin="0,3,0,0"
TextAlignment="Right" MaxLength="15"
KeyDown="Textbox_KeyDown" TextChanged="Textbox_TextChanged" >
<Binding Path="SlabDepth">
<Binding.Converter>
<converters:LengthInchTextboxConverter x:Name="LengthInchTextboxConverter_SlabDepth" />
</Binding.Converter>
<Binding.ValidationRules>
<validations:ValidateLength x:Name="ValidateLength_SlabDepth"/>
<validations:ValidateNotNullOrWhiteSpace x:Name="ValidateNotNullOrWhiteSpace_SlabDepth"/>
</Binding.ValidationRules>
</Binding>
<TextBox.Style>
<Style TargetType="TextBox">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsSlabDepthModified}" Value="True">
<Setter Property="Background" Value="Yellow" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
谢谢。
【问题讨论】:
-
当您有一个可以实现
INotifyDataErrorInfo或IDataErrorInfo的视图模型类时,为什么还要使用验证规则? -
这就是我和我的团队做 UI 的方式。在这个项目之前,我们之前没有 WPF 经验,所以我们尽最大努力从头开始构建它。
标签: c# wpf binding converters validationrules