C# 如何在选中文本块中的文本的位置显示弹出型按钮
我想在我的文本块中添加一个弹出按钮,当我在文本块中选择文本时,弹出按钮将显示在Microsoft Edge中选定的类似阅读模式下,当你在阅读模式下选择文本时,弹出按钮将显示单词的定义。但我不知道怎么做。我已尝试使用SelectionChanged,但此事件传递的参数没有可用于设置弹出按钮的位置。那我该怎么做呢? 另外,我想知道SelectionFlyout是做什么用的?我想这对我有帮助。 这是我的密码:C# 如何在选中文本块中的文本的位置显示弹出型按钮,c#,xaml,uwp,textblock,flyout,C#,Xaml,Uwp,Textblock,Flyout,我想在我的文本块中添加一个弹出按钮,当我在文本块中选择文本时,弹出按钮将显示在Microsoft Edge中选定的类似阅读模式下,当你在阅读模式下选择文本时,弹出按钮将显示单词的定义。但我不知道怎么做。我已尝试使用SelectionChanged,但此事件传递的参数没有可用于设置弹出按钮的位置。那我该怎么做呢? 另外,我想知道SelectionFlyout是做什么用的?我想这对我有帮助。 这是我的密码: <TextBlock x:Name="webviewtest" Grid.Row="1
<TextBlock x:Name="webviewtest" Grid.Row="1" Text="This is a select-flyout test." FontSize="300" IsTextSelectionEnabled="true" >
<TextBlock.SelectionFlyout>
<Flyout>
<TextBlock Text="this is the flyout"></TextBlock>
</Flyout>
</TextBlock.SelectionFlyout>
</TextBlock>
当我选择文本时,弹出按钮从未出现。很明显我用错了。所以我查了一下,它说
获取或设置选定文本时显示的弹出按钮,如果未显示弹出按钮,则为null
我在网上找不到任何关于此的示例。这可以通过将TextBlock IsTextSelectionEnabled设置为True并使用MenuFlyout显示所选文本来实现 XAML
您需要使用RichTextBlock替换TextBlock,平台为17134和laster
<RichTextBlock HorizontalAlignment="Center"
VerticalAlignment="Center"
IsTextSelectionEnabled="True">
<RichTextBlock.ContextFlyout>
<Flyout>
<TextBlock Text="flyout" />
</Flyout>
</RichTextBlock.ContextFlyout>
<RichTextBlock.SelectionFlyout>
<Flyout>
<TextBlock Text="this is the flyout" />
</Flyout>
</RichTextBlock.SelectionFlyout>
<Paragraph>
welcome to blog.lindexi.com that has many blogs
</Paragraph>
</RichTextBlock>
Selection弹出按钮为work in touch。TextBlock.SelectionFlyout不工作·问题452·Microsoft/Microsoft ui xaml
所有的代码都在
抱歉,我错误地删除了问题中的IsTextSelectionEnabled属性,我的代码中有该属性。这不是解决办法。我已经试过你的方法了。首先,弹出按钮显示在文本块上,但不显示在所选文本上。这听起来可能很混乱,我应该说我希望它显示在光标所在的位置。第二,弹出按钮在文本突出显示后显示,因为SelectionChange在突出显示之前触发。我尝试使用“点击”事件。但是由于我的文本块是可选择的,所以除了RightTapped事件之外,没有触发任何“Tapped”事件。啊,我现在看到你的问题了。使用RightTapped事件有什么问题?您当然可以从中获得光标位置。需要有一个用户操作,即点击、双击、右击,在选择文本后,才能按您希望的方式进行操作。我将基于此更新我的答案,以防将来它可能对您或其他人有所帮助。因为RightTapped需要正确的点击,这不是我想要显示弹出按钮的方式。我想实现的是,在选定一些文本并释放鼠标或手指后显示一个弹出按钮,@Hongjia您可以使用TextBlock.SelectionFlyout[TextBlock.SelectionFlyout不工作·问题452·Microsoft/Microsoft ui xaml]它在touch中工作,但在我右键单击或长按触摸时会显示弹出按钮,在我选择文本并突出显示后,弹出按钮是否会立即显示,或者只是使用触摸屏进行简单触摸?
private void webviewtest_RightTapped(object sender, RightTappedRoutedEventArgs e)
{
TextBlock tb = sender as TextBlock;
if (tb.SelectedText.Length > 0)
{
Item.Text = tb.SelectedText;
}
// Show at cursor position
Flyout.ShowAt(sender as UIElement, e.GetPosition(sender as UIElement));
}
<RichTextBlock HorizontalAlignment="Center"
VerticalAlignment="Center"
IsTextSelectionEnabled="True">
<RichTextBlock.ContextFlyout>
<Flyout>
<TextBlock Text="flyout" />
</Flyout>
</RichTextBlock.ContextFlyout>
<RichTextBlock.SelectionFlyout>
<Flyout>
<TextBlock Text="this is the flyout" />
</Flyout>
</RichTextBlock.SelectionFlyout>
<Paragraph>
welcome to blog.lindexi.com that has many blogs
</Paragraph>
</RichTextBlock>