DataGridHyperlinkColumn 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
public ref class DataGridHyperlinkColumn : System::Windows::Controls::DataGridBoundColumn
public class DataGridHyperlinkColumn : System.Windows.Controls.DataGridBoundColumn
type DataGridHyperlinkColumn = class
inherit DataGridBoundColumn
Public Class DataGridHyperlinkColumn
Inherits DataGridBoundColumn
- 继承
示例
以下示例演示一个 ,DataGridHyperlinkColumn它使用 属性设置 ,BindingUri并使用 ContentBinding 属性设置超链接文本。 事件 Hyperlink.Click 会自动处理,因为 NavigationWindow 是 的 DataGrid父级。
<NavigationWindow x:Class="DataGrid_CustomColumns.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:core="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:DataGrid_CustomColumns"
Title="Customers" Height="300" Width="300" ShowsNavigationUI="False" >
<NavigationWindow.Resources>
<!--Create an instance of the converter for Email-->
<local:EmailConverter x:Key="EmailConverter" />
</NavigationWindow.Resources>
<NavigationWindow.Content>
<Grid>
<DataGrid Name="DG1" ItemsSource="{Binding}" AutoGenerateColumns="False" >
<DataGrid.Columns>
<!--The Email property contains a URI. For example "mailto:lucy0@adventure-works.com"-->
<DataGridHyperlinkColumn Header="Email" Binding="{Binding Email}" ContentBinding="{Binding Email, Converter={StaticResource EmailConverter}}" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</NavigationWindow.Content>
</NavigationWindow>
public partial class Window1 : NavigationWindow
{
Class Window1
public Window1()
{
InitializeComponent();
//GetData() creates a collection of Customer data from a database
ObservableCollection<Customer> custdata = GetData();
//Bind the DataGrid to the customer data
DG1.DataContext = custdata;
}
Public Sub New()
' This call is required by the Windows Form Designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
'GetData() creates a collection of Customer data from a database
Dim custdata As ObservableCollection(Of Customer) = GetData()
'Bind the DataGrid to the customer data
DG1.DataContext = custdata
End Sub
//Defines the customer object
public class Customer
{
public string FirstName { get; set; }
public string LastName { get; set; }
public Uri Email { get; set; }
public bool IsMember { get; set; }
public OrderStatus Status { get; set; }
}
'Defines the customer object
Public Class Customer
Public Property FirstName() As String
Public Property LastName() As String
Public Property Email() As Uri
Public Property IsMember() As Boolean
Public Property Status() As OrderStatus
End Class
}
End Class
//Converts the mailto uri to a string with just the customer alias
public class EmailConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value != null)
{
string email = value.ToString();
int index = email.IndexOf("@");
string alias = email.Substring(7, index-7);
return alias;
}
else
{
string email = "";
return email;
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
Uri email = new Uri((string)value);
return email;
}
}
'Converts the mailto uri to a string with just the customer alias
Public Class EmailConverter
Implements IValueConverter
Public Function Convert(value As Object, targetType As System.Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert
If value IsNot Nothing Then
Dim email As String = value.ToString()
Dim index As Integer = email.IndexOf("@")
Dim [alias] As String = email.Substring(7, index - 7)
Return [alias]
Else
Dim email As String = ""
Return email
End If
End Function
Public Function ConvertBack(value As Object, targetType As System.Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.ConvertBack
Dim email As New Uri(DirectCast(value, String))
Return email
End Function
End Class
注解
用于 DataGridHyperlinkColumn 显示包含 的数据, Uri例如 HTTP 地址或电子邮件地址。 下图显示了 DataGridHyperlinkColumn 的一个示例。
注意
Hyperlink 仅当 的直接或间接父级 Hyperlink 是导航主机时,才会发生导航。 导航主机的示例包括 NavigationWindow、 Frame或可以托管 XBAPs 的任何浏览器。 有关详细信息,请参阅 导航概述中的“导航主机”一文。
有关 XBAP 支持的详细信息,请参阅 有关 WPF 浏览器托管应用程序的常见问题 (XBAP) 。
若要填充列,请使用 Binding 属性将该列绑定到Uri数据。 若要显示与 URI 字符串不同的超链接文本,请将文本值绑定到 ContentBinding 属性。 属性 Binding 应用于 Hyperlink 列中创建的 或 TextBox 元素。 DataContext每个单元格中 元素的 是单元格所属行的数据项。 因此,若要设置绑定,只需设置 Binding.Path。 (可选)如果要转换数据,可以指定 Binding.Converter 。 有关数据绑定的详细信息,请参阅 数据绑定 (WPF) 。
注意
DataGridHyperlinkColumn 在 Hyperlink 非编辑模式下创建元素 TextBox ,在编辑模式下创建 元素。
如果要显示其他类型的数据, DataGrid 请提供以下列类型:
列类型 | 数据显示 |
---|---|
DataGridCheckBoxColumn | 使用 显示布尔数据。 |
DataGridComboBoxColumn | 使用 显示枚举数据。 |
DataGridTextColumn | 使用 显示文本。 |
如果要使用 中的其他 DataGrid控件,可以使用 创建自己的列类型 DataGridTemplateColumn。
构造函数
DataGridHyperlinkColumn() |
初始化 DataGridHyperlinkColumn 类的新实例。 |
字段
TargetNameProperty |
标识 TargetName 依赖项属性。 |
属性
ActualWidth |
获取列的当前宽度,以与设备无关的单位 (每单位) 1/96 英寸。 (继承自 DataGridColumn) |
Binding |
获取或设置将列与数据源中的属性关联的绑定。 (继承自 DataGridBoundColumn) |
CanUserReorder |
获取或设置一个值,该值指示用户能否通过拖放列标题来更改列的显示位置。 (继承自 DataGridColumn) |
CanUserResize |
获取或设置一个值,该值指示用户是否可使用鼠标调整列宽。 (继承自 DataGridColumn) |
CanUserSort |
获取或设置一个值,该值指示用户能否通过单击列标题对列进行排序。 (继承自 DataGridColumn) |
CellStyle |
获取或设置用于呈现列中单元格的样式。 (继承自 DataGridColumn) |
ClipboardContentBinding |
获取或设置要在获取或设置剪贴板的单元格内容时使用的绑定对象。 (继承自 DataGridBoundColumn) |
ContentBinding |
获取或设置超链接的文本的绑定。 |
DataGridOwner |
获取包含此列的 DataGrid 控件。 (继承自 DataGridColumn) |
DefaultEditingElementStyle |
EditingElementStyle 属性的默认值。 |
DefaultElementStyle |
ElementStyle 属性的默认值。 |
DependencyObjectType |
DependencyObjectType获取包装此实例的 CLR 类型的 。 (继承自 DependencyObject) |
Dispatcher |
获取与此 Dispatcher 关联的 DispatcherObject。 (继承自 DispatcherObject) |
DisplayIndex |
获取或设置该列相对于 DataGrid 中其他列的显示位置。 (继承自 DataGridColumn) |
DragIndicatorStyle |
获取或设置要在拖动操作过程中应用于列标题的样式对象。 (继承自 DataGridColumn) |
EditingElementStyle |
获取或设置在呈现列为处于编辑模式的单元格显示的元素时使用的样式。 (继承自 DataGridBoundColumn) |
ElementStyle |
获取或设置在呈现列为未处于编辑模式的单元格显示的元素时使用的样式。 (继承自 DataGridBoundColumn) |
Header |
获取或设置列标题的内容。 (继承自 DataGridColumn) |
HeaderStringFormat |
获取或设置要应用于列标题的内容的格式模式。 (继承自 DataGridColumn) |
HeaderStyle |
获取或设置呈现列标题时使用的样式。 (继承自 DataGridColumn) |
HeaderTemplate |
获取或设置定义列标题的可视化表示形式的模板。 (继承自 DataGridColumn) |
HeaderTemplateSelector |
获取或设置选择要用于列标题的模板的对象。 (继承自 DataGridColumn) |
IsAutoGenerated |
获取一个值,该值指示是否自动生成列。 (继承自 DataGridColumn) |
IsFrozen |
获取一个值,该值指示是否阻止列水平滚动。 (继承自 DataGridColumn) |
IsReadOnly |
获取或设置一个值,该值指示能否编辑列中的单元格。 (继承自 DataGridColumn) |
IsSealed |
获取一个值,该值指示此实例当前是否为密封的(只读)。 (继承自 DependencyObject) |
MaxWidth |
获取或设置列的最大宽度约束。 (继承自 DataGridColumn) |
MinWidth |
获取或设置列的最小宽度约束。 (继承自 DataGridColumn) |
SortDirection |
获取或设置列的排序方向(升序或降序)。 (继承自 DataGridColumn) |
SortMemberPath |
获取或设置属性名称或用句点分隔的属性名称层次结构,它指示作为排序依据的成员。 (继承自 DataGridColumn) |
TargetName |
获取或设置超链接的目标窗口或框架的名称。 |
Visibility |
获取或设置列的可见性。 (继承自 DataGridColumn) |
Width |
获取或设置列的宽度或自动调整大小模式。 (继承自 DataGridColumn) |
方法
事件
CopyingCellClipboardContent |
在单元格剪贴板内容准备好之后发生。 (继承自 DataGridColumn) |
PastingCellClipboardContent |
在剪贴板内容传输到单元格之前发生。 (继承自 DataGridColumn) |