Laden...

DataBinding: Button soll sich beim Klick gelb -> rot färben

Erstellt von Robin0 vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.449 Views
R
Robin0 Themenstarter:in
212 Beiträge seit 2012
vor 10 Jahren
DataBinding: Button soll sich beim Klick gelb -> rot färben

Ich fange gerade an mich in wpf einzuarbeiten.
Meine frage ist:
Wie kann ich die Farbe des "Button" mittels DataBinding(im GradientStop) auf sichselbst referenzieren lassen sodass beim Klicken des Buttons dieser sich in Gelb->Rot färbt?

Danke im vorraus
XML:

 <Window.Resources>
        <Style TargetType="Button">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Border x:Name="Border"
                                Background="Green"
                                BorderBrush="Black"
                                BorderThickness="1"
                                Padding="5,5,5,10">

                            <ContentPresenter Margin="2"
                                              HorizontalAlignment="Center"
                                              VerticalAlignment="Center"
                                              RecognizesAccessKey="True" />
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="true">
                                <Setter TargetName="Border" Property="Background" Value="Yellow" />
                            </Trigger>
                            <Trigger Property="IsPressed" Value="true">
                                <Setter TargetName="Border" Property="Background">
                                    <Setter.Value>
                                        <LinearGradientBrush StartPoint="0,0.5" EndPoint="1,0.5">
                                            <GradientStop Offset="0.0" Color="{Binding Path=Background, RelativeSource={RelativeSource self}}" />
                                            <GradientStop Offset="0.9" Color="Red" />
                                        </LinearGradientBrush>
                                    </Setter.Value>
                                </Setter>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Window.Resources>

    <Grid Width="391"
          Height="175"
          HorizontalAlignment="Left"
          VerticalAlignment="Top">
        <StackPanel>
            <Button Name="submitName"
                    Content="View message"
                    Background="AliceBlue"
                    Padding="10,10,10,20"/>
            <Button Name="submi4Name"
                    Background="Beige"
                    Content="View message"
                    Padding="10,10,10,20" />
        </StackPanel>
    </Grid>
P
660 Beiträge seit 2008
vor 10 Jahren

Hallo,

du kannst es mal mit RelativeSource und FindAncestor versuchen
ich habe z.B. folgendes Konstrukt.

<Window.Resources>
<DataTemplate x:Key="SomeThing">
<Grid DataContext="{Binding RelativeSource=
            {RelativeSource Mode=FindAncestor, AncestorType=
                {x:Type Grid}}, Path=DataContext}" Focusable="False" >

MfG
ProGamer*Der Sinn Des Lebens Ist Es, Den Sinn Des Lebens Zu Finden! *"Wenn Unrecht zu Recht wird dann wird Widerstand zur Pflicht." *"Ignorance simplifies ANY problem." *"Stoppt die Piraterie der Musikindustrie"

R
Robin0 Themenstarter:in
212 Beiträge seit 2012
vor 10 Jahren

Hallo ProGamer,

Danke hab vorhin bemerkt das sobald ich mich in dem LinearGradientBrush befinde die Backgroundeigenschaft sich schon geändert hat.

5.299 Beiträge seit 2008
vor 10 Jahren

prinzipiell ist ein Button, der beim Klicksen seine Farbe wechselt, ein ToggleButton.
Damit sollteste das eiglich hinkriegen.

Der frühe Apfel fängt den Wurm.