Válí se ti projekty v šuplíku? Dostaň je mezi lidi a získej cool tričko a body na profi IT kurzy v soutěži ITnetwork summer 2017!
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)

Diskuze: C# - WPF - Button

C# .NET .NET (C# a Visual Basic) C# - WPF - Button American English version English version

Aktivity (1)
Avatar
HONZ4
Člen
Avatar
HONZ4:17.10.2016 19:25

Ahoj, poprvé zkouším si WPF. Mám button s gradient:

<Button x:Name="button" Content="Play" Margin="0,0,10,10" Click="button_Click" HorizontalAlignment="Right" Width="101" Height="34" VerticalAlignment="Bottom" BorderBrush="#FF707070" Foreground="#FFE2E2E2" FontWeight="Bold">
    <Button.Background>
        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
            <GradientStop Color="#FF212121" Offset="1"/>
            <GradientStop Color="#FF2E2E2E"/>
        </LinearGradientBrush>
    </Button.Background>
</Button>

ale nemůžu přijít na to, jak nastavit barvu gradientu při najetí myší nad tlačítko, při stisku a při změně "enabled"

Editováno 17.10.2016 19:27
 
Odpovědět 17.10.2016 19:25
Avatar
ostrozan
Redaktor
Avatar
Odpovídá na HONZ4
ostrozan:17.10.2016 20:30

Tak to už je trochu "vyšší dívčí"
buď si to nastav v obsluze události "MouseOver",

nebo použij Trigger

 
Nahoru Odpovědět 17.10.2016 20:30
Avatar
HONZ4
Člen
Avatar
Odpovídá na ostrozan
HONZ4:17.10.2016 22:55

Dá se to přes ten trigger nastavit nějak globálně?

 
Nahoru Odpovědět 17.10.2016 22:55
Avatar
Lukas C#
Redaktor
Avatar
Odpovídá na HONZ4
Lukas C#:17.10.2016 23:44

Pomocí Resources:

<Window.Resources>
<Style TargetType="TextBlock">
                    <Setter Property="Foreground" Value="Blue"></Setter>
                    <Style.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="Foreground" Value="Red" />
                            <Setter Property="TextDecorations" Value="Underline" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
</Window.Resources>

-> použití TargetType="Tex­tBlock" automaticky nastaví tento styl všem TextBlockům, které jsou v elementu Window. Analogicky tedy s Button

 
Nahoru Odpovědět 17.10.2016 23:44
Avatar
HONZ4
Člen
Avatar
Odpovídá na Lukas C#
HONZ4:18.10.2016 19:09

Mohl by poprosit o komplet ukázku?
Mě se to nedaří:

<Window x:Class="WpfApplication5.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApplication5"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">

    <Window.Resources>
        <Style TargetType="Button">
            <Setter Property="Foreground" Value="Blue"></Setter>
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Foreground" Value="Red" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>

    <Grid Background="#FF202020">
        <Button x:Name="button" Content="Play" Margin="0,0,116,10" Click="button_Click" HorizontalAlignment="Right" Width="101" Height="34" VerticalAlignment="Bottom" BorderBrush="#FF707070" Foreground="#FFE2E2E2" FontWeight="Bold">
            <Button.Background>
                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                    <GradientStop Color="#FF212121" Offset="1"/>
                    <GradientStop Color="#FF2E2E2E"/>
                </LinearGradientBrush>
            </Button.Background>
        </Button>
        <Label x:Name="label1" Content="Label" Margin="49,41,0,0" Height="25" VerticalAlignment="Top" HorizontalAlignment="Left" Width="151" Foreground="#FFA6BD11" FontWeight="Bold"/>
        <Button x:Name="button_Copy" Content="Stop" Margin="0,0,10,10" Click="button_Click" HorizontalAlignment="Right" Width="101" Height="34" VerticalAlignment="Bottom" BorderBrush="#FF707070" Foreground="#FFE2E2E2" FontWeight="Bold" IsCancel="True">
            <Button.Background>
                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                    <GradientStop Color="#FF212121" Offset="1"/>
                    <GradientStop Color="#FF2E2E2E"/>
                </LinearGradientBrush>
            </Button.Background>
        </Button>
    </Grid>
</Window>

Já nejlépe pochopím na konkrétním příkladu jak to funguje. Na netu jsem našel spoustu dlouhých kódů, ale ne to na čem bych to pochopil. A nemůžu nikde najít žádný rozumný tutoriál, nebo návod.

Editováno 18.10.2016 19:10
 
Nahoru Odpovědět 18.10.2016 19:09
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.