gpt4 book ai didi

c# - Xaml:MouseLeftButtonUp 事件不起作用

转载 作者:行者123 更新时间:2023-11-30 22:08:45 30 4
gpt4 key购买 nike

我有一个声明为 ControlTemplate 的 Button 的 xaml 代码App.xaml

 <!--Style for button start here-->
<Style x:Key="myButtonStyle" TargetType="Border">
<EventSetter Event="Border.MouseLeftButtonDown" Handler="ButtonDown" />
<EventSetter Event="Border.MouseLeftButtonUp" Handler="ButtonUp" />
<EventSetter Event="Border.MouseEnter" Handler="ButtonEnter" />
<EventSetter Event="Border.MouseLeave" Handler="ButtonLeave"/>

</Style>

<!--Style for myButtonStyle ends here-->

<!--Control Template for button start here-->
<ControlTemplate TargetType="Button" x:Key="buttonPrimary">
<Grid Width="{TemplateBinding Width}">
<Border Height="35" Width="{TemplateBinding Width}" Style="{StaticResource myButtonStyle}" Background="{TemplateBinding Background}" CornerRadius="3" Loaded="borderLoaded" x:Name="myButton">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" >
<TextBlock.Foreground>
White
</TextBlock.Foreground>
<TextBlock.FontSize>14</TextBlock.FontSize>

</ContentPresenter>
</Border>
</Grid>

</ControlTemplate>

在另一个文件中我处理了所有的鼠标事件..Main.cs

 private void ButtonDown(object sender, RoutedEventArgs e)
{
Console.WriteLine("ButtonDown");

}//Button Down method ends here


private void ButtonUp(object sender, RoutedEventArgs e)
{
Console.WriteLine("Button Up");

}//ButtonUp method ends here


private void ButtonLeave(object sender, RoutedEventArgs e)
{
Console.WriteLine("ButtonLeave");
}


private void ButtonEnter(object sender, RoutedEventArgs e)
{
Console.WriteLine("ButtonEnter");
}

在 main.xaml 中我调用这些按钮..Main.xaml

 <Button   Content="ButtonPrimary" Width="110" Background="#428bca" Template="{StaticResource buttonPrimary}"  />

除 MouseLeftButtonUp 外,所有事件都在触发 ..??

最佳答案

Button 的点击事件吃掉了 MouseUp 事件。

所以:

    <Style x:Key="buttonPrimary" TargetType="Button">
<EventSetter Event="Click" Handler="ButtonBase_OnClick"/>
<EventSetter Event="PreviewMouseLeftButtonDown" Handler="ButtonDown" />
<EventSetter Event="PreviewMouseLeftButtonUp" Handler="ButtonUp" />
<EventSetter Event="MouseEnter" Handler="ButtonEnter" />
<EventSetter Event="MouseLeave" Handler="ButtonLeave"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid Width="{TemplateBinding Width}">
<Border Height="35" Width="{TemplateBinding Width}" Background="{TemplateBinding Background}" CornerRadius="3" x:Name="myButton">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" >
<TextBlock.Foreground>
White
</TextBlock.Foreground>
<TextBlock.FontSize>14</TextBlock.FontSize>

</ContentPresenter>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

然后添加刚刚处理点击事件的ButtonBase_OnClick事件:

private void ButtonBase_OnClick(object sender, RoutedEventArgs e){
e.Handled = true;
}

然后将您的按钮从 Template= 更改为 Style= 然后您将获得所有事件。

关于c# - Xaml:MouseLeftButtonUp 事件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22069868/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com