Search code examples
wpficommand

Command on WPF Button with ControlTemplate doesn't work on the entire area


I'm binding the ICommand nammed GoToSheet to a Button with ControlTemplate.

<Button Margin="10 10 10 10" Command="{Binding GoToSheet}">
    <Button.Template>
        <ControlTemplate>
            <DockPanel Width="840">
                <Border DockPanel.Dock="Left" BorderBrush="Black" BorderThickness="5"></Border>
                <Border DockPanel.Dock="Top" BorderBrush="Black" BorderThickness="2"></Border>
                <Border DockPanel.Dock="Right" BorderBrush="Black" BorderThickness="2"></Border>
                <Border DockPanel.Dock="Bottom" BorderBrush="Black" BorderThickness="2"></Border>
                <DockPanel DockPanel.Dock="Left">
                    <StackPanel Orientation="Vertical" Margin="20 10 0 10">
                        <StackPanel Orientation="Horizontal">
                            <StackPanel Orientation="Vertical" Margin="0 0 0 10">
                                <TextBlock Text="{Binding Client}" FontSize="30" FontWeight="Bold" MaxWidth="480"></TextBlock>
                                <TextBlock Text="{Binding Lieu}" FontSize="22" MaxWidth="480"></TextBlock>
                            </StackPanel>
                            <Image Height="35" Width="45" Margin="7 3 0 0" VerticalAlignment="Top" Source="/Resource/Image/CHC.png"></Image>
                        </StackPanel>
                        <StackPanel Orientation="Vertical" VerticalAlignment="Bottom" Margin="20 0 0 0">
                            <TextBlock Text="{Binding MarqueEngin}" FontSize="26" FontWeight="Bold"></TextBlock>
                            <TextBlock Text="{Binding ModeleEngin}" FontSize="19" FontWeight="Bold"></TextBlock>
                        </StackPanel>
                    </StackPanel>
                </DockPanel>
                <DockPanel DockPanel.Dock="Right" Margin="0 10 20 10">
                    <TextBlock DockPanel.Dock="Top" Text="{Binding DateIntervention, StringFormat=dd/MM/yyyy}" FontSize="30" HorizontalAlignment="Right"></TextBlock>
                    <TextBlock DockPanel.Dock="Bottom" Text="{Binding NumeroEngin}" VerticalAlignment="Bottom" FontSize="30" FontWeight="Bold" HorizontalAlignment="Right"></TextBlock>
                </DockPanel>
            </DockPanel>
        </ControlTemplate>
    </Button.Template>
</Button>

Why the command only works on the successes areas (see image) ? Is there a solution for the command works on the entire button area ?


Solution

  • The transparent background must be on the DockPanel in place of Button.

    <Button Margin="10 10 10 10" Command="{Binding GoToSheet}">
            <Button.Template>
                <ControlTemplate>
                    <DockPanel Width="840" Background="Transparent">
    

    Thanks to macieqqq.