TextBlock内がダブルクリックされたときに、対応する行番号が知りたい


例えば

[code]

    qwer
    asdf
    zxcv
    
[/code]

と表示されているときに、qの位置でダブルクリックされたら0行目, dの位置でダブルクリックされたら1行目, などの情報を取得したいです。

LabelなどTextBlock風の見た目であればTextBlockでなくてもかまいません。ただし、行を跨いでドラッグした場合でもそれらが選択され、コピー可能である必要があります。




TextBoxをダブルクリックすると、`MouseButtonEvent`の前に単語が選択されるようで、これを利用して`SelectionStart`から逆算することが出来ました。

[code]

    void TextBox_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
        int line = TextBox.Text.Substring(0, TextBox.SelectionStart).Split(new[] { Environment.NewLine, "\n", "\r" }, StringSplitOptions.None).Skip(1).Count();         
    }
    
[/code]




TextBoxをダブルクリックすると、`MouseButtonEvent`の前に単語が選択されるようで、これを利用して`SelectionStart`から逆算することが出来ました。

[code]

    void TextBox_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
        int line = TextBox.Text.Substring(0, TextBox.SelectionStart).Split(new[] { Environment.NewLine, "\n", "\r" }, StringSplitOptions.None).Skip(1).Count();         
    }
    
[/code]

