检查某个容器或其子容器是否存在验证错误非常容易。这可以用来禁用Save按钮。
我可以使用计时器
public SomeUserControl()
{
InitializeComponent();
var timer = new DispatcherTimer
{
Interval = TimeSpan.FromMilliseconds(100),
IsEnabled = true
};
Loaded += (s, e) => buttonSave.IsEnabled = IsValid(grid);
Unloaded += (s, e) => timer.Stop();
}
轮询和禁用按钮。
<!-- container with lots of controls, bindings and validations -->
<Grid x:Name="grid">
...
</Grid>
<!-- save button -->
<Button x:Name="buttonSave" ... />
有没有更好的办法?理想情况下,我想要一个活动。不幸的是,我发现的唯一事件 Validation.Error事件只能用于具有绑定本身的元素。通过子元素和订阅(更不用说我必须处理添加新子元素)感觉比投票更糟糕。
想法?