Я пытаюсь сделать usercomponent, который позволит вам щелкнуть по слову внутри TextBlock и изменить его. Мне удалось сделать слова интерактивными и определить, какое слово я нажал. Но мне также нужно знать координаты, где произошел щелчок.Получение точки (X, Y), где нажата на гиперссылку в TextBlock
Мой код:
<UserControl
x:Class="wordedit.EditableTextBlock"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:wordedit"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300"
d:DesignWidth="400">
<Grid Name="grid">
<TextBlock Margin="0" Padding="0" LineStackingStrategy="BaselineToBaseline" TextLineBounds="Full" TextWrapping="WrapWholeWords" Name="textBlock">
</TextBlock>
</Grid>
</UserControl>
С # код: как РМКО построения Инлайн из TextBlock
Run r = new Run();
r.Text = words[i];
Hyperlink l = new Hyperlink();
l.Click += L_Click;
l.Inlines.Add(r);
textBlock.Inlines.Add(l);
private void L_Click(Hyperlink sender, HyperlinkClickEventArgs args)
{ // doing some user response here
}
Поскольку Клик аргументы не дают никакой информации вообще и даже не позволяет мне установить Handled к ложному. Это означает, что сам текстовый блок не запускает событие Tapped.
Есть ли способ, чтобы просто получить координаты? Спасибо !
EDIT: Другие мои мысли. Я могу легко получить X, Y из события Tapped. Так можно ли поставить прозрачный элемент перед текстовым блоком в качестве невидимого холста и обработать событие и передать его через элемент под ним?