Wpf 在运行时将可单击/超链接文本添加到datagrid文本
我想在运行时将可单击/超链接文本添加到datagrid文本 这是我的DataGrid的XAML代码Wpf 在运行时将可单击/超链接文本添加到datagrid文本,wpf,Wpf,我想在运行时将可单击/超链接文本添加到datagrid文本 这是我的DataGrid的XAML代码 <DataGrid Height="298" HorizontalAlignment="Left" Margin="18,273,0,0" Name="ResultDataGrid" VerticalAlignment="Top" Width="415" RowBackground="#6B8DBBD1" AlternatingRowBackground="#CAD3D3BB" Hor
<DataGrid Height="298" HorizontalAlignment="Left" Margin="18,273,0,0" Name="ResultDataGrid" VerticalAlignment="Top" Width="415"
RowBackground="#6B8DBBD1" AlternatingRowBackground="#CAD3D3BB" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"
CanUserSortColumns="True" IsReadOnly="True" HeadersVisibility="Column" HorizontalGridLinesBrush="#97000000" VerticalGridLinesBrush="#97000000" />
这是我的LoadCollectionData,它将返回collection
private List<ReviewedData> LoadCollectionData(DataTable resultData)
{
List<ReviewedData> result = new List<ReviewedData>();
if (resultData != null && resultData.Rows.Count > 0)
{
for (var i = 0; i < resultData.Rows.Count; ++i)
{
result.Add( new ReviewedData()
{
PROJECTNAME = resultData.Rows[i]["Name"].ToString(),
STATUS = resultData.Rows[i]["status"].ToString()
});
}
}
return result;
}
私有列表LoadCollectionData(数据表resultData)
{
列表结果=新列表();
if(resultData!=null&&resultData.Rows.Count>0)
{
对于(变量i=0;i
如何向每个项目名称添加可单击/超链接文本,以便打开新窗口显示DataGrid中显示的每个项目的更多项目详细信息
任何建议
关于,您应该更多地依赖数据绑定和模板,而不是在运行时修改UI。这就是WPF的本质
这种情况下,您可能需要考虑使用<代码> DATGARIDHyLink列。不要忘记关闭
AutoGenerateColumns
功能,因为您希望控制列的外观:
<DataGrid AutoGenerateColumns="False"
.... >
<DataGrid.Columns>
<DataGridHyperlinkColumn Binding="{Binding PROJECTNAME}" Header="Name">
<DataGridHyperlinkColumn.ElementStyle>
<Style>
<EventSetter Event="Hyperlink.Click" Handler="Hyperlink_Click"/>
</Style>
</DataGridHyperlinkColumn.ElementStyle>
</DataGridHyperlinkColumn>
<DataGridTextColumn Binding="{Binding STATUS}" Header="Status"/>
</DataGrid.Columns>
</DataGrid>
<DataGrid AutoGenerateColumns="False"
.... >
<DataGrid.Columns>
<DataGridHyperlinkColumn Binding="{Binding PROJECTNAME}" Header="Name">
<DataGridHyperlinkColumn.ElementStyle>
<Style>
<EventSetter Event="Hyperlink.Click" Handler="Hyperlink_Click"/>
</Style>
</DataGridHyperlinkColumn.ElementStyle>
</DataGridHyperlinkColumn>
<DataGridTextColumn Binding="{Binding STATUS}" Header="Status"/>
</DataGrid.Columns>
</DataGrid>
private void Hyperlink_Click(object sender, RoutedEventArgs e)
{
Hyperlink link = (Hyperlink)e.OriginalSource;
//Do something useful instead of just showing the hyperlink text in message box :
MessageBox.Show(link.NavigateUri.ToString());
}