【问题标题】:Handle DataGridHyperlinkColumn Click Event处理 DataGridHyperlinkColumn 点击事件
【发布时间】:2010-12-17 20:20:28
【问题描述】:

如何通过代码(在 .xaml.cs 文件中)以编程方式处理 DataGridHyperlinkColumn 的点击事件。

【问题讨论】:

    标签: wpf datagrid


    【解决方案1】:

    如果你只是想在浏览器中导航到链接,就像编写这样的处理程序一样简单:

    void EventSetter_OnHandler(object sender, RoutedEventArgs e)
    {
      var destination = ((Hyperlink) e.OriginalSource).NavigateUri;
      Process.Start(destination.ToString());
    }
    

    如果您想在导航时采取一些自定义操作,使用相关行中的信息,那么您将需要访问超链接的数据上下文:

    void EventSetter_OnHandler(object sender, RoutedEventArgs e)
    {
      var rowData = ((Hyperlink) e.OriginalSource).DataContext as User;
      navigationService.NavigateToUserRecordForId(rowData.Id);
    }
    

    如果你想以编程方式创建一个超链接列,并绑定到它的点击事件,你可以这样做:

    var style = new Style(typeof(TextBlock));
    
    style.Setters.Add(new EventSetter(Hyperlink.ClickEvent,     (RoutedEventHandler)EventSetter_OnHandler));
    
    var column = new DataGridHyperlinkColumn { Header = "User", Binding = new Binding("ViewUserLink"), ElementStyle = style };
    
    dataGrid1.Columns.Add(column);
    

    这个stack overflow answer 也有关于 WPF 工具包的 Data GridHyperlinkColumn 的详细信息,值得一试。

    【讨论】:

      【解决方案2】:

      使用这个:

      <dg:DataGridHyperlinkColumn.ElementStyle>
      <Style TargetType="TextBlock">
      <EventSetter Event="Hyperlink.Click" Handler="OnHyperlinkClick" />
      </Style>
      </dg:DataGridHyperlinkColumn.ElementStyle>
      </dg:DataGridHyperlinkColumn>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多