我正在构建一个WPF应用程序。在这个应用程序中,我有一个具有不同列的DataGrid控件,其中一个是DataGridHyperlinkcolumn。我希望这个超链接的工作就像任何超链接将在网络世界。打开新窗口时,我需要传递行ID来提取特定于该行的数据。
我怎样才能做到这一点?我用错方法了吗?对不起,我不熟悉WPF
<Window x:Class="WpfApplication1.Window2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window2" Height="300" Width="300">
<Grid>
<DataGrid AutoGenerateColumns="False" Margin="10,10,12,12" Name="dataGrid1" ItemsSource="{Binding}">
<DataGrid.Columns>
<DataGridHyperlinkColumn Header="Header" Binding="{Binding link}" ContentBinding="{Binding content}">
<DataGridHyperlinkColumn.ElementStyle>
<Style TargetType="TextBlock">
<EventSetter Event="Hyperlink.Click" Handler="EventSetter_OnHandler" />
</Style>
</DataGridHyperlinkColumn.ElementStyle>
</DataGridHyperlinkColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
public partial class Window2 : Window
{
class Data
{
public string link { get; set; }
public string content { get; set; }
}
public Window2()
{
InitializeComponent();
dataGrid1.DataContext = new object[] { new Data { link = "window2?id=3", content = "window2" } };
}
void EventSetter_OnHandler(object sender, RoutedEventArgs e)
{
var rowData = ((Hyperlink)e.OriginalSource).DataContext as Data ;
// resolve the link ...
}
}