我有一个 MVVM(Prism)应用程序。UserControl
包含以下元素:
<Grid>
<ItemsControl x:Name="MyItemsControl"
ItemsSource="{Binding Path=OrderCollection}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBox x:Name="MyTextBox">
<TextBox.Text>
<Binding Path="ID" Mode="TwoWay">
<Binding.ValidationRules>
<vr:OrderIDValidationRule/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<Button x:Name="MyButton">
</Button>
</Grid>
OrderIDValidationRule 只是一个简单的验证规则,用于检查 ID 是否在有效范围内。来自 ViewModel 的代码:
public ObservableCollection<Order> OrderCollection;
public class Order : BindableBase
{
private int? _id;
public int? ID
{
get => _id;
set => SetProperty(ref _id, value);
}
}
如果 MyTextBox(带有任何 Order)包含一些错误值,是否有办法禁用 MyButton。例如,如果用户输入“abc”。在这种情况下,会显示验证错误,但绑定源不会更新 - 不确定是否INotifyDataErrorInfo
可以提供帮助
根据我的回答的示例https://stackoverflow.com/a/74293719/13349759
PS如果你“不怕”俄语,你可以看看这里的另一种实现:如何从所有子元素中获取验证错误