我正在构建一个WPF应用程序(遵守MVVM设计模式),并且我已经应用于我的模型属性的验证工作得很好(代码部分),无论文本框在什么类型的窗口内。但是,关于文本框的默认Validation.ErrorTemplate,如果出现错误,它会给出一个红色轮廓...这只显示文本框与标准窗口一起使用时,如果它在我的内部则不显示CustomWindow或CustomDialog。这两个自定义控件都从Window类继承,并且只覆盖基本Window的美学功能。
要重新解决问题肯定在我的自定义窗口中的问题 - 我可以将CustomWindow中的xaml标记直接交换到Window,一切都很好。
所以,我在想的是我需要在自定义窗口的主题中专门定义一个Validation.ErrorTemplate,比如当你覆盖一个按钮模板时 - 如果你没有定义一个悬停样式它没有一个人!但我不知道如何去做和/或如果有可能,我无法通过谷歌找到任何帮助我的东西。
非常感谢任何建议/指导/帮助!
答案 0 :(得分:0)
确实可行。以下面的示例(来自MSDN的链接页面):
<TextBox Name="textBox1" Width="50" FontSize="15"
Validation.ErrorTemplate="{StaticResource validationTemplate}"
Style="{StaticResource textBoxInError}"
Grid.Row="1" Grid.Column="1" Margin="2">
<TextBox.Text>
<Binding Path="Age" Source="{StaticResource ods}"
UpdateSourceTrigger="PropertyChanged" >
<Binding.ValidationRules>
<c:AgeRangeRule Min="21" Max="130"/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
现在我们定义模板:
<ControlTemplate x:Key="validationTemplate">
<DockPanel>
<TextBlock Foreground="Red" FontSize="20">!</TextBlock>
<AdornedElementPlaceholder/>
</DockPanel>
</ControlTemplate>
您可以在MSDN的Validation.ErrorTemplate Attached Property页面上找到更多信息。
答案 1 :(得分:0)
最后发现了另一个与我的问题相关的问题和一个有效的解决方案!
我在自定义窗口的控件模板中省略了adorner图层。我不想窃取解决方案,所以请在此处查看原始答案 - Error template not working when a ControlTemplate is applied to the window。