0

我正在构建一个 WPF 应用程序(遵守 MVVM 设计模式),并且无论文本框位于哪种类型的窗口中,我对模型属性应用的验证都可以正常工作(代码部分)。但是,关于文本框的默认 Validation.ErrorTemplate 如果出现错误,它会给它一个红色轮廓......好吧,这只显示文本框与标准窗口一起使用时,如果它在我的 CustomWindow 或自定义对话框。这两个自定义控件都继承自 Window 类,并且仅覆盖基本 Window 的美学特征。

重申问题肯定出在我的自定义窗口中的观点 - 我可以将 xaml 标记从 CustomWindow 交换到 Window 并且一切都很好。

所以,我在想的是,我需要在自定义窗口的主题中专门定义一个 Validation.ErrorTemplate,例如,当您覆盖按钮模板时 - 如果您没有定义悬停样式,它将没有!但我不知道如何去做和/或是否有可能,我无法通过谷歌找到任何可以帮助我的东西。

非常感谢任何建议/指导/帮助!

4

2 回答 2

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页面了解更多信息。

于 2013-09-13T09:08:42.040 回答
0

终于找到了另一个与我的问题相关的问题和一个有效的解决方案!

我在自定义窗口的控制模板中省略了装饰层。我不想窃取解决方案,因此请在此处查看原始答案 -将 ControlTemplate 应用于窗口时错误模板不起作用

于 2013-09-13T20:37:56.050 回答