MessageBox иногда не открывается при нажатии на края Button1 - PullRequest
0 голосов
/ 30 ноября 2018

xaml коды здесь;

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <Button x:Name="Button1" Height="25" Width="100" Content="Click Me" Click="Button1_Click" RenderTransformOrigin="0.5,0.5">
        <Button.Style>
            <Style TargetType="Button">
                <Style.Triggers>
                    <Trigger Property="IsPressed" Value="True">
                        <Setter Property="RenderTransform">
                            <Setter.Value>
                                <ScaleTransform ScaleX="0.9" ScaleY="0.9"/>
                            </Setter.Value>
                        </Setter>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </Button.Style>
    </Button>
</Grid>
</Window>

C # коды здесь;

private void Button1_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("Thanks for click");
}

vb.net коды здесь;

Private Sub Button1_Click(sender As Object, e As RoutedEventArgs)
    MessageBox.Show("Thanks for click")
End Sub

Запустите вышеуказанные кодыи нажмите центр Button1 и увидите, что MessageBox показывает вам Спасибо за клик

Мой вопрос здесь:

Когда вы нажмете края Button1 , вы увидите, что Button1 ведет себя нажатие , но MessageBox не открывается!(На самом деле иногда открывается иногда нет!)

Итак, почему этот MessageBox иногда не открывается при нажатии ребер Button1 ?

Обратите внимание, что япопытался LayoutTransform вместо RenderTransform , но эта проблема все еще существует.

1 Ответ

0 голосов
/ 01 декабря 2018

Джон получил правильную причину, по которой вы не можете открыть MessageBox.Масштаб вашей кнопки, а затем выход за пределы диапазона - правильная причина.

Вы должны переопределить свой стиль кнопки, чтобы кнопка повсеместно работала.

<Style TargetType="Button">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <!-- This transparent background is important,
                     because it helps you to hit the button even when it is scaled to 0.9. -->
                <Border x:Name="OuterBorder" Background="Transparent">
                    <Border x:Name="RootBorder" Background="{TemplateBinding Background}"
                            BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
                        <ContentPresenter />
                    </Border>
                </Border>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsPressed" Value="True">
                        <Setter TargetName="RootBorder" Property="RenderTransform">
                            <Setter.Value>
                                <ScaleTransform ScaleX="0.9" ScaleY="0.9" />
                            </Setter.Value>
                        </Setter>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Обратите внимание, что мы добавляемпрозрачный Border снаружи, так что кнопка всегда может быть нажата краем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...