因此,我遇到了一个例外,即我有一个带有DataGridHyperlinkColumn
的数据网格,其中已将Click事件连接到该网格。单元绑定到包含pdf文件路径的字符串。在一个简单的测试表单中,一切正常,但是在我的应用程序中出现了问题。我收到的异常消息是:Unable to convert source to object.
吃了Process.start行。
某些代码:
XAML:
<DataGrid
Name="dgInvoices"
Grid.Column="1"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
AutoGenerateColumns="False"
CanUserAddRows="False"
Hyperlink.Click="DG_Hyperlink_Click"
CanUserDeleteRows="False"
ColumnWidth="*"
HeadersVisibility="Column"
ItemsSource="{Binding lstInvoices, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
VerticalScrollBarVisibility="Visible">
<DataGridHyperlinkColumn
Width="*"
Binding="{Binding InvoicePDF, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Header="PDF"
IsReadOnly="True"/>
<!--<DataGridHyperlinkColumn.ElementStyle>
<Style>
<EventSetter Event="Hyperlink.Click" Handler="DG_Hyperlink_Click" />
</Style>
</DataGridHyperlinkColumn.ElementStyle>
</DataGridHyperlinkColumn>-->
</DataGrid.Columns>
后面的代码:
''' <summary>
''' Open Invoice PDF
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub DG_Hyperlink_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
Try
Dim link As Hyperlink = CType(e.OriginalSource, Hyperlink)
Process.Start(link.NavigateUri.AbsoluteUri)
Catch ex As Exception
LocalMain.ShowError(ex.Message)
Log.Exception(ex)
End Try
End Sub