Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: WPF Po nahození vlastní template na Button se událost Click vyvolává pouze po kliknutí na obsah

Aktivity
Avatar
Tomáš Heky Hekrla:1.1.2017 14:44

Ahoj, potřebuju radu. Dělám na jednom projektu, kde si potřebuji nastylovat tlačítka. Nicméně, narazil jsem na již zmíněný problém v nadpisu vlákna.

Událost Click se vyvolá pouze v případě, že kliknu na libovolné místo uvnitř zeleného obdelníku. Já ovšem potřebuji, aby se událost vyvolala a po kliknutí do oblasti, ve které jsou červené tečky, tzv. do vnitř okraje tlačítka. Ukázka je dole pod příspěvkem.

XAML kód:

<Window x:Class="Test_BtnContStretch.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:Test_BtnContStretch"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525" WindowStartupLocation="CenterScreen">
    <Grid>
        <Button Margin="15" Content="Text" BorderBrush="#9A9B9A" BorderThickness="5" Background="{x:Null}" FontSize="72" Foreground="#9A9B9A" Click="Button_Click"/>
    </Grid>
    <Window.Resources>
        <Style TargetType="Button">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Border BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="15" BorderBrush="{TemplateBinding BorderBrush}">
                            <ContentControl HorizontalAlignment="Center" VerticalAlignment="Center" Content="{TemplateBinding Content}"/>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Window.Resources>
</Window>

C# kód:

using System.Windows;

namespace Test_BtnContStretch
{
        /// <summary>
        /// Interaction logic for MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window
        {
                public MainWindow()
                {
                        InitializeComponent();
                }

                private void Button_Click(object sender, RoutedEventArgs e)
                {
                        MessageBox.Show("Stisknul jsi tlačítko");
                }
        }
}
Editováno 1.1.2017 14:47
 
Odpovědět
1.1.2017 14:44
Avatar
Tomáš Heky Hekrla:1.1.2017 14:50

Edit 14:50
Teď jsem ještě zjistil, že se událost Click vyvolá také po kliknutí na border.

 
Nahoru Odpovědět
1.1.2017 14:50
Avatar
Odpovídá na Tomáš Heky Hekrla
sadlomaslox25:1.1.2017 16:54

z Background="{x:Nu­ll}" na Background="Tran­sparent"

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
1.1.2017 16:54
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 3 zpráv z 3.