我试过的是?
XAML代码:
<Grid x:Name="grid" Width="500">
<RichEditBox Height="32" PointerPressed="RichEditBox_PointerPressed" Background="Transparent" ></RichEditBox>
</Grid>C#代码:
private void RichEditBox_PointerPressed(object sender, PointerRoutedEventArgs e)
{
Debug.WriteLine("Hello");
}当我点击RichEditBox时,PointerPressed事件不会被触发,我不知道问题出在哪里?
此外,当我右键单击RichEditBox时,它会显示默认的contextMenu(粗体、斜体、粘贴、..),我不想让它.How也停止吗?
发布于 2020-10-21 09:18:29
当我单击RichEditBox时,PointerPressed Evnt不会被触发。
PointerRoutedEventArgs有处理bool性质。如果有任何PointerEventHandler将此Handled标记为true,则事件处理程序链不再继续。由于一些明显的原因,RichEditBox控件的设计人员不得不挂起PointerPressed事件,并且在处理程序中,Handled被设置为true。因此,您添加到事件中的处理程序不会被调用。
您可以使用AddHandler事件处理技术指定要调用PointerPressed事件处理程序,即使使用第三个参数集将该事件标记为true也是如此,如下所示:
richEditBox.AddHandler(RichEditBox.PointerReleasedEvent, new PointerEventHandler(RichEditBox_PointerPressed), true);但是,您可能还会注意到,文档说“不要常规要求重新处理路由事件,因为它会干扰Windows系统用于控制合成的设计。”
除了上述方法之外,我们还可以使用PointerCaptureLost事件,当您单击RichEditBox控件来替换PointerPressed事件时,可以调用该事件。
此外,当我右键单击RichEditBox时,它会显示默认的contextMenu(粗体、斜体、粘贴、..),我不想让它.How也停止吗?
您可以添加一个新的Flyout,将Visibility属性设置为Collapsed以替换原始的Flyout,因此,当您右键单击RichEditBox控件时,不会显示ContextMenu。例如:
<RichEditBox x:Name="box" Width="100" Height="32" >
<RichEditBox.ContextFlyout>
<Flyout>
<Flyout.FlyoutPresenterStyle>
<Style TargetType="FlyoutPresenter">
<Setter Property="Visibility" Value="Collapsed" />
</Style>
</Flyout.FlyoutPresenterStyle>
</Flyout>
</RichEditBox.ContextFlyout>
</RichEditBox>https://stackoverflow.com/questions/64456046
复制相似问题