获取文本块的精确字符

时间:2013-07-08 09:15:20

标签: wpf xaml mouse textblock

我想知道是否有任何方法可以获取鼠标在TextBlock中直接指出的字符。

我已经找到了如何使用TextBox使用以下代码执行此操作:

 private void TextBox_MouseMove(object sender, MouseEventArgs e)
        {
            TextBox t = sender as TextBox;
            Point p = e.GetPosition(t);

            int val =  t.GetCharacterIndexFromPoint(p, true);    

            txtResult.Text = t.Text[val].ToString() ;
        }

但似乎TextBlock没有任何类似的方法。

有没有人有想法?

风筝

1 个答案:

答案 0 :(得分:0)

如果GetCharacterIndexFromPoint()没有TextBlock这样的现成功能,我可以建议使用Style TextBox来模拟TextBlock的行为<Style x:Key="TextBlockBehavior" TargetType="{x:Type TextBox}"> <Setter Property="IsReadOnly" Value="True" /> <Setter Property="BorderThickness" Value="0" /> <Setter Property="Padding" Value="0" /> <Setter Property="BorderBrush" Value="Transparent" /> <Setter Property="Cursor" Value="Arrow" /> </Style> <TextBox Style="{StaticResource TextBlockBehavior}" Text="Sample" Width="100" Height="30" MouseMove="TextBox_MouseMove" /> 1}}。

示例:

GetCharacterIndexFromPoint()

TextBlock实现{{1}}等功能可能会更容易。