【问题标题】:How to get Run's text inside a Hyperlink?如何在超链接中获取 Run 的文本?
【发布时间】:2023-03-22 02:30:01
【问题描述】:

这是我的 XAML 标记:

<TextBlock>
    <Hyperlink Click="InstrumentFile_Click">
        <Run Text="{Binding InstrumentFile}"/>
    </Hyperlink>
</TextBlock>

C#:

private void InstrumentFile_Click(object sender, RoutedEventArgs e)
{
    Hyperlink link = sender as Hyperlink;
    if (link != null)
    {
        //need to get text here
    }
}

我想获取绑定到 Run 的文本。我怎样才能得到?谢谢!

【问题讨论】:

  • 说什么?你能重新提出那个标题/问题吗
  • 它有什么问题?相反,你能改善你的错别字吗?据我所知,这是改写而不是 refraise :)
  • 你想从哪里“得到”它?在InstrumentFile_Click 方法中?
  • @fguchelaar:是的。你可以检查我的编辑。
  • 如果您确定标记(层次结构)总是像您的示例中一样,您可以使用((Run)link.Inlines.ElementAt(0)).Text。但我会考虑使用一些“更安全”的代码。

标签: c# .net wpf c#-4.0 wpf-4.0


【解决方案1】:

这是一个愚蠢的情况。您已经编写了一个具有 InstrumentFile 成员的类,并通过视图绑定到它。现在您想以编程方式访问视图,以便首先获取您提供给它的数据吗?倒退了!

只需直接访问 InstrumentFile 成员。你一开始就写了代码!

【讨论】:

  • 没有你想的那么傻。我没有实现 MVVM 模式,也没有使用 INotifyPropertyChanged。此处发布的文本块位于 DataGrid 内。您能否澄清一下我如何知道点击了哪个超链接并访问它的文本?
  • sender 属性为您提供单击的对象,并且您知道它的DataContext 将是它绑定到的对象。如果您真的不想使用 MVVM,请从 sender 获取超链接,获取它绑定到的对象,然后访问该属性。但这是一个糟糕的模型,MVVM 以极其简单和轻松的方式解决了这个问题
  • 这不是我的意思 - 如果您更改视图并忘记代码,该注释的代码将因运行时错误而中断。只需使用该对象获取 DataContext 并获取它绑定的类。不太可能改变。这是由于缺乏良好的代码结构造成的质量问题..
猜你喜欢
  • 1970-01-01
  • 2014-01-26
  • 1970-01-01
  • 1970-01-01
  • 2013-11-07
  • 2017-12-23
  • 2018-06-26
  • 2017-12-21
  • 1970-01-01
相关资源
最近更新 更多