在一个ChildWindow里使用TabControl分两个TabItem,
每个TabItem都有一个DataGrid。
给两个DataGrid里的行设置了ToolTipService
代码如下
1 ToolTipStrings tipStrings = new ToolTipStrings(); 2 3 private void dgMaintain_LoadingRow(object sender, DataGridRowEventArgs e) 4 { 5 int index = e.Row.GetIndex(); 6 var maintain = e.Row.DataContext as Maintain; 7 if (maintain != null) 8 { 9 ToolTipService.SetToolTip(e.Row, tipStrings.GetMaintainListTips(maintain)); 10 } 11 } 12 13 private void dgLedger_LoadingRow(object sender, DataGridRowEventArgs e) 14 { 15 int index = e.Row.GetIndex(); 16 var ledger = e.Row.DataContext as Ledger; 17 if (ledger != null) 18 { 19 ToolTipService.SetToolTip(e.Row, tipStrings.GetLedgerListTips(ledger)); 20 } 21 }
运行后,鼠标滚动DataGrid的行,
ToolTipService.SetToolTip(); 会报错
用户代码未处理 System.Exception
Message=对 COM 组件的调用返回了错误 HRESULT E_FAIL。
StackTrace:
位于 子窗体.dgLedger_LoadingRow(Object sender, DataGridRowEventArgs e)
位于 System.Windows.Controls.DataGrid.OnLoadingRow(DataGridRowEventArgs e)
位于 System.Windows.Controls.DataGrid.GenerateRow(Int32 rowIndex, Int32 slot, Object dataContext)
位于 System.Windows.Controls.DataGrid.GenerateRow(Int32 rowIndex, Int32 slot)
位于 System.Windows.Controls.DataGrid.InsertDisplayedElement(Int32 slot, Boolean updateSlotInformation)
位于 System.Windows.Controls.DataGrid.GetExactSlotElementHeight(Int32 slot)
位于 System.Windows.Controls.DataGrid.UpdateDisplayedRows(Int32 newFirstDisplayedSlot, Double displayHeight)
位于 System.Windows.Controls.DataGrid.ScrollSlotsByHeight(Double height)
位于 System.Windows.Controls.DataGrid.OnRowsMeasure()
位于 System.Windows.Controls.Primitives.DataGridRowsPresenter.MeasureOverride(Size availableSize)
位于 System.Windows.FrameworkElement.MeasureOverride(IntPtr nativeTarget, Single inWidth, Single inHeight, Single& outWidth, Single& outHeight) InnerException: