[英]MessageBox sometimes doesnt open when pressing edges of Button1
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沒有打開! (實際上有時打開有時不打開!)
那么,為什么單擊Button1的邊緣時有時 MessageBox 有時無法打開?
請注意,我嘗試了LayoutTransform而不是RenderTransform,但是此問題仍然存在。
喬恩(喬恩)有一個正確的原因,你不能打開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
以便按鈕始終可以被邊緣擊中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.