PointerWheelChanged 的奇怪问题
Weird issues with PointerWheelChanged
我有一个带网格的简单页面。网格包含一个 TextBlock。我在页面上添加了 PointerWheelChanged 的处理程序。
出于某种原因,仅当鼠标指针位于 TextBlock 内而不是其他任何位置时才调用该事件。
我尝试将事件添加到网格中。
我的代码:
<Page
x:Class="App.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:App"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
PointerWheelChanged="Page_PointerWheelChanged">
<Grid>
<TextBlock HorizontalAlignment="Center" Text="TextBlock" TextWrapping="Wrap" VerticalAlignment="Center" Height="980" Width="1480" x:Name="test" FontSize="72"/>
</Grid>
</Page>
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Input;
namespace App {
/// <summary>
/// An empty page that can be used on its own or navigated to within a Frame.
/// </summary>
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}
private void Page_PointerWheelChanged(object sender, PointerRoutedEventArgs e) {
var delta = e.GetCurrentPoint((UIElement)sender).Properties.MouseWheelDelta;
test.Text = delta.ToString();
}
}
}
我最初是在一个更复杂的应用程序中发现它的。这是一个简单的应用程序,我试图在其中重现此行为。
不给Element设置背景和给Element设置Background="Transparent"是不一样的。后者使控件具有交互性。你可以尝试给网格一个透明的背景,让网格响应鼠标事件。
像这样:
<Grid Background="Transparent" >
<TextBlock HorizontalAlignment="Center" Text="TextBlock" TextWrapping="Wrap" VerticalAlignment="Center" Height="200" Width="200" x:Name="test" FontSize="72"/>
</Grid>
出于测试目的,我稍微更改了文本块的大小。
我有一个带网格的简单页面。网格包含一个 TextBlock。我在页面上添加了 PointerWheelChanged 的处理程序。
出于某种原因,仅当鼠标指针位于 TextBlock 内而不是其他任何位置时才调用该事件。
我尝试将事件添加到网格中。
我的代码:
<Page
x:Class="App.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:App"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
PointerWheelChanged="Page_PointerWheelChanged">
<Grid>
<TextBlock HorizontalAlignment="Center" Text="TextBlock" TextWrapping="Wrap" VerticalAlignment="Center" Height="980" Width="1480" x:Name="test" FontSize="72"/>
</Grid>
</Page>
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Input;
namespace App {
/// <summary>
/// An empty page that can be used on its own or navigated to within a Frame.
/// </summary>
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}
private void Page_PointerWheelChanged(object sender, PointerRoutedEventArgs e) {
var delta = e.GetCurrentPoint((UIElement)sender).Properties.MouseWheelDelta;
test.Text = delta.ToString();
}
}
}
我最初是在一个更复杂的应用程序中发现它的。这是一个简单的应用程序,我试图在其中重现此行为。
不给Element设置背景和给Element设置Background="Transparent"是不一样的。后者使控件具有交互性。你可以尝试给网格一个透明的背景,让网格响应鼠标事件。
像这样:
<Grid Background="Transparent" >
<TextBlock HorizontalAlignment="Center" Text="TextBlock" TextWrapping="Wrap" VerticalAlignment="Center" Height="200" Width="200" x:Name="test" FontSize="72"/>
</Grid>
出于测试目的,我稍微更改了文本块的大小。