Frage

I have use 10 TextBox in my application and in that same application i have defined the style in App.xaml It applies for all the text boxes in my application . how to disable the style applying for a single TextBox.

Can any one help me out in this.

I used the below code to set the style

<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>
War es hilfreich?

Lösung

if you just want the default style then

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

otherwise Cédric Bignon's answer with target type defined (like below) will do the job. No property will be inherited by your application TextBoxStyle

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

if you want to slightly change the default application style then use the following tecqnique where in your style you can redefine properties you want to be different from the default or define additional ones

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

Andere Tipps

Just use an empty style:

<TextBox>
    <TextBox.Style>
        <Style>

        </Style>
    </TextBox.Style>
</TextBox>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top