我使用MVVM设计模式创建了一个WPF应用程序。 MainView有一个带有两个项目的tabcontrol,每个项目都有一个不同的View / ViewModel,如下面的代码所示
<TabControl>
<TabItem Header="Test 2" DataContext="{Binding CurrentTest2ViewModel, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<AdornerDecorator>
<local:Test2View></local:Test2View>
</AdornerDecorator>
</TabItem>
<TabItem Header="Test 1" DataContext="{Binding CurrentTest1ViewModel, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<AdornerDecorator>
<local:Test1View></local:Test1View>
</AdornerDecorator>
</TabItem>
</TabControl>
在两个ViewModel中的一个中,我使用IDataErrorInfo接口来验证属性。相应的View具有以下代码
<StackPanel Orientation="Vertical">
<CheckBox HorizontalAlignment="Left" Width="80" Content="IsRed" IsChecked="{Binding IsRed, ValidatesOnDataErrors=True, NotifyOnValidationError=True}" IsEnabled="{Binding IsEnabled}">
<Validation.ErrorTemplate>
<ControlTemplate>
<StackPanel Orientation="Horizontal">
<AdornedElementPlaceholder />
<Label Content="{Binding Path=ErrorContent}" ToolTip="{Binding Path=ErrorContent}" />
</StackPanel>
</ControlTemplate>
</Validation.ErrorTemplate>
</CheckBox>
<CheckBox HorizontalAlignment="Left" Width="80" Content="IsGreen" IsChecked="{Binding IsGreen, ValidatesOnDataErrors=True, NotifyOnValidationError=True}" IsEnabled="{Binding IsEnabled}">
<Validation.ErrorTemplate>
<ControlTemplate>
<StackPanel Orientation="Horizontal">
<AdornedElementPlaceholder />
<Label Content="{Binding ErrorContent}" ToolTip="{Binding ErrorContent}" />
</StackPanel>
</ControlTemplate>
</Validation.ErrorTemplate>
</CheckBox>
</StackPanel>
当第一次显示该项时,验证会发现某些属性的值不正确,因为我可以通过断点查看,但错误消息未显示在屏幕上。要重现错误消息,我需要在正确的值之前选择,之后当值无效时,将显示错误消息。
我的问题是:
1)如何在第一次在屏幕上显示项目时重现验证的错误消息? 2)如果我只使用主视图而不使用任何项目的不同视图,为什么我没有问题?
非常感谢你。