【问题标题】:WPF data validation is overriding theme on the interfaceWPF 数据验证是界面上的压倒一切的主题
【发布时间】:2011-02-26 22:54:01
【问题描述】:

由于 stackoverflow 上的帖子,我构建了一个 WPF 应用程序并设法使验证正常工作。我遇到的唯一问题是它覆盖了我正在使用的主题。 例如,主题使文本框看起来像一个圆角矩形,但在设置绑定后它看起来像默认文本框。这是我的代码:

<Button.Style>
            <Style TargetType="{x:Type Button}">
                <Setter Property="IsEnabled" Value="false" />

                <Style.Triggers>
                <!-- Require the controls to be valid in order to press OK -->
                <MultiDataTrigger>
                        <MultiDataTrigger.Conditions>
                            <Condition Binding="{Binding ElementName=txtEmail, Path=(Validation.HasError)}" Value="false" />

                        </MultiDataTrigger.Conditions>
                        <Setter Property="IsEnabled" Value="true" />
                    </MultiDataTrigger>
                </Style.Triggers>
            </Style>
        </Button.Style>

后面的代码是:

//Form loaded event code
txtEmail.GetBindingExpression(TextBox.TextProperty).UpdateSource();

我试图查看主题文件,但很快就迷路了。我想我可以像使用 web css 文件一样使用该文件。现在我因此禁用了数据绑定。是否有任何解决方法这?感谢您阅读本文

【问题讨论】:

    标签: c# wpf data-binding multidatatrigger


    【解决方案1】:

    不确定这是否是根本问题,但请尝试将BasedOn="{StaticResource {x:Type Button}}" 添加到样式元素。

    Button.Style> 
                <Style TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}"> 
    ...
    

    【讨论】:

    • 没错。一个元素一次只能应用一种样式。为了组合样式,最简单的方法是从应用于元素的新样式“继承”基本样式(您的主题)。
    猜你喜欢
    • 2011-07-09
    • 1970-01-01
    • 2016-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-24
    • 1970-01-01
    相关资源
    最近更新 更多