none
Zustände eines Buttons überschreiben RRS feed

  • Frage

  • Ich würde gern bei einem Button den Normal-zustand, den "Maus-darüber"-Zustand und den gedrückten Zustand jeweils mit einem eigenen Bild überschreiben. Ich habe leider noch nicht so viel Ahnung von Styles und Templates.
    Koopakiller - http://koopakiller.ko.ohost.de/
    Samstag, 4. Februar 2012 16:58
    Moderator

Antworten

  • Hi,

    google mal nach WPF Button ControlTemplate. Da findest was du suchst!

     

    Gruß

    Sonntag, 5. Februar 2012 15:19
  • Danke für den Tipp, in der MSDN und auf DotNet bin ich fündig geworden. Jetzt stört mich nióch eines: Wenn ich den Button Klicken taucht so eine Schwarz-eiß gestrichelte Linie auf.

    Wie bekomme ich die weg? Mein  Bisheriger Code:
            <ControlTemplate x:Key="LogInButton" TargetType="{x:Type Button}">
                <Border BorderBrush="White" BorderThickness="1" CornerRadius="3">
                    <Border BorderBrush="Black" BorderThickness="0" CornerRadius="3">
                        <Grid Name="ButtonGrid">
                            <Rectangle Name="ButtonRect">
                                <Rectangle.Fill>
                                    <ImageBrush ImageSource="/UserLoginControl;component/res/login_state_1.png"/>
                                </Rectangle.Fill>
                            </Rectangle>
                            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" Width="Auto" />
                        </Grid>
                    </Border>
                </Border>
                <ControlTemplate.Triggers>                
                     <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="Fill" TargetName="ButtonRect"> 
                            <Setter.Value> 
                                <ImageBrush ImageSource="/UserLoginControl;component/res/login_state_2.png" /> 
                            </Setter.Value> 
                        </Setter> 
                    </Trigger> 
    
                    <Trigger Property="IsPressed" Value="True">
                        <Setter Property="Fill" TargetName="ButtonRect"> 
                            <Setter.Value> 
                                <ImageBrush ImageSource="/UserLoginControl;component/res/login_state_3.png" /> 
                            </Setter.Value> 
                        </Setter> 
                    </Trigger>                 
                </ControlTemplate.Triggers>
            </ControlTemplate>
    

    Der Button:
            <Button Height="59" HorizontalAlignment="Right" Margin="0,14,12,0" Name="buttonLogInOut" VerticalAlignment="Top" 
                    Width="59" Template="{DynamicResource LogInButton}" BorderThickness="0">
    


    Koopakiller - http://koopakiller.ko.ohost.de/
    Sonntag, 5. Februar 2012 17:04
    Moderator
  •  

    Hallo,

     

    versuche mal bei deinem Button den FocusVisualStyle auf null zu setzen

    FocusVisualStyle="{x:Null}"
    

    damit sollte der Selectionsrahmen eigentlich verschwinden.

    Ciao Andreas

    Montag, 6. Februar 2012 07:53

Alle Antworten

  • Hi,

    google mal nach WPF Button ControlTemplate. Da findest was du suchst!

     

    Gruß

    Sonntag, 5. Februar 2012 15:19
  • Danke für den Tipp, in der MSDN und auf DotNet bin ich fündig geworden. Jetzt stört mich nióch eines: Wenn ich den Button Klicken taucht so eine Schwarz-eiß gestrichelte Linie auf.

    Wie bekomme ich die weg? Mein  Bisheriger Code:
            <ControlTemplate x:Key="LogInButton" TargetType="{x:Type Button}">
                <Border BorderBrush="White" BorderThickness="1" CornerRadius="3">
                    <Border BorderBrush="Black" BorderThickness="0" CornerRadius="3">
                        <Grid Name="ButtonGrid">
                            <Rectangle Name="ButtonRect">
                                <Rectangle.Fill>
                                    <ImageBrush ImageSource="/UserLoginControl;component/res/login_state_1.png"/>
                                </Rectangle.Fill>
                            </Rectangle>
                            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" Width="Auto" />
                        </Grid>
                    </Border>
                </Border>
                <ControlTemplate.Triggers>                
                     <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="Fill" TargetName="ButtonRect"> 
                            <Setter.Value> 
                                <ImageBrush ImageSource="/UserLoginControl;component/res/login_state_2.png" /> 
                            </Setter.Value> 
                        </Setter> 
                    </Trigger> 
    
                    <Trigger Property="IsPressed" Value="True">
                        <Setter Property="Fill" TargetName="ButtonRect"> 
                            <Setter.Value> 
                                <ImageBrush ImageSource="/UserLoginControl;component/res/login_state_3.png" /> 
                            </Setter.Value> 
                        </Setter> 
                    </Trigger>                 
                </ControlTemplate.Triggers>
            </ControlTemplate>
    

    Der Button:
            <Button Height="59" HorizontalAlignment="Right" Margin="0,14,12,0" Name="buttonLogInOut" VerticalAlignment="Top" 
                    Width="59" Template="{DynamicResource LogInButton}" BorderThickness="0">
    


    Koopakiller - http://koopakiller.ko.ohost.de/
    Sonntag, 5. Februar 2012 17:04
    Moderator
  •  

    Hallo,

     

    versuche mal bei deinem Button den FocusVisualStyle auf null zu setzen

    FocusVisualStyle="{x:Null}"
    

    damit sollte der Selectionsrahmen eigentlich verschwinden.

    Ciao Andreas

    Montag, 6. Februar 2012 07:53
  • Danke, funktioniert alles wunderbar.
    Koopakiller - http://koopakiller.ko.ohost.de/
    Montag, 6. Februar 2012 13:35
    Moderator