禁用 WPF 应用程序中 10 个文本框中一个文本框的样式

本文关键字:文本 一个 样式 应用程序 禁用 WPF | 更新日期: 2023-09-27 17:56:53

我在应用程序中使用了 10 个TextBox,在同一应用程序中,我在 App.xaml 中定义了样式 它适用于我应用程序中的所有文本框。 如何禁用申请单个TextBox的样式。

任何人都可以在这方面帮助我。

我使用以下代码来设置样式

<Style TargetType="{x:Type TextBox}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type TextBox}">
                <Border Background="White" 
                    x:Name="Bd" BorderBrush="#FF50729f" CornerRadius="3"
                    BorderThickness="1"
                >
                    <ScrollViewer x:Name="PART_ContentHost"/>
                </Border>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsEnabled" Value="False">
                        <Setter Property="Background" TargetName="Bd" Value="#FFe0dfe3"/>
                        <Setter Property="BorderBrush" TargetName="Bd" Value="#FF9da3ab"/>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
    <Setter Property="Validation.ErrorTemplate">
        <Setter.Value>
            <ControlTemplate>
                <Border BorderBrush="#FFd22c2c" BorderThickness="1" 
                                Background="#FFfce8e8" CornerRadius="3" >
                    <AdornedElementPlaceholder></AdornedElementPlaceholder>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
    <Style.Triggers>
        <Trigger Property="IsEnabled" Value="False">
            <Setter Property="Background"  Value="#FFe0dfe3"/>
            <Setter Property="BorderBrush" Value="#FF9da3ab"/>
        </Trigger>
        <Trigger Property="Validation.HasError" Value="true">
            <Setter Property="ToolTip"
            Value="{Binding RelativeSource={RelativeSource Self},
            Path=(Validation.Errors)[0].ErrorContent}"/>
        </Trigger>
    </Style.Triggers>
</Style>

禁用 WPF 应用程序中 10 个文本框中一个文本框的样式

如果你只想要默认样式,那么

<TextBox Style="{x:Null}"/>

否则,Cédric Bignon 定义目标类型的答案(如下所示)将完成这项工作。应用程序 TextBoxStyle 不会继承任何属性

    <TextBox>
        <TextBox.Style>
            <Style TargetType="{x:Type TextBox}">
               <!-- your setters-->
            </Style>
        </TextBox.Style>
    </TextBox>

如果要稍微更改默认应用程序样式然后按照您的风格使用以下技术重新定义要与默认值不同的属性或定义其他

     <TextBox>
        <TextBox.Style>
            <Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
             <!-- your setters-->
            </Style>
        </TextBox.Style>
    </TextBox>

只需使用空样式:

<TextBox>
    <TextBox.Style>
        <Style>
        </Style>
    </TextBox.Style>
</TextBox>