Laden...

Style mit TargetType mehrmals definieren?

Erstellt von KPhoenix vor 10 Jahren Letzter Beitrag vor 10 Jahren 857 Views
K
KPhoenix Themenstarter:in
175 Beiträge seit 2011
vor 10 Jahren
Style mit TargetType mehrmals definieren?

Nur eine kurze Verständnisfrage. Ich teste mich gerade an Styles und hab einen implizierten Style mit TargetType=TextBox definiert. Wenn ich jetzt einen neuen Style mit TargetType=TextBox definiere, dann bekomme ich eine Exception. Egal ob der neue Style impliziert ist oder ich ihn mit einem Namen versehen. Kann es sein, dass man nur einen Style mit TargetType definieren kann?

K
KPhoenix Themenstarter:in
175 Beiträge seit 2011
vor 10 Jahren

Hier der Code. Heißt ich kann keinen neuen Style für TextBox erzeugen, selbst wenn ich ihn mit x:Name versehen, wenn es schon einen implizierten Style für TextBox gibt?


<Window x:Class="Styles_Trigger_Templates.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="550" Width="525">
    <Window.Resources>
        <Style TargetType="TextBox" >
            <Style.Triggers>
                <Trigger Property="IsFocused" Value="True">
                    <Trigger.Setters>
                        <Setter Property="Foreground" Value="White" />
                        <Setter Property="Background" Value="Black" />
                    </Trigger.Setters>
                </Trigger>
                <Trigger Property="IsMouseOver" Value="True">
                    <Trigger.Setters>
                        <Setter Property="Background" Value="LightGray" />
                    </Trigger.Setters>
                </Trigger>
            </Style.Triggers>
        </Style>
        <Style x:Name="tbStyle" TargetType="TextBox">
            <Setter Property="Background" Value="White" />
            <Style.Triggers>
                <DataTrigger Binding="{Binding RelativeSource={x:Static RelativeSource.Self},Path=Text}" Value="rot" >
                    <Setter Property="Background" Value="Red" />
                </DataTrigger>
                <DataTrigger Binding="{Binding RelativeSource={x:Static RelativeSource.Self},Path=Text}" Value="gelb" >
                    <Setter Property="Background" Value="Yellow" />
                </DataTrigger>
                <DataTrigger Binding="{Binding RelativeSource={x:Static RelativeSource.Self},Path=Text}" Value="schwarz" >
                    <Setter Property="Background" Value="Black" />
                    <Setter Property="Foreground" Value="White" />
                </DataTrigger>
            </Style.Triggers>
        </Style>

W
113 Beiträge seit 2006
vor 10 Jahren

Hallo KPhoenix,

soweit ich weiß werden Resourcen nicht per 'Name' sonder per 'Key' identifizert.
Also so:


<Style x:Key="tbStyle" TargetType="TextBox">

Gruß,
xan

K
KPhoenix Themenstarter:in
175 Beiträge seit 2011
vor 10 Jahren

Oh man wie peinlich. Natürlich war da der Fehler. Sonst hab ich auch immer x:Key verwendet, nur da nicht. Danke 👍