- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
现在我有一个奇怪的。这只发生在 Windows XP 下的独立构建(调试/发布,无关紧要)。在 Windows 7 下工作得很好。无论如何,因为我必须确保该应用程序在 XP 下工作,所以我不得不做一些解决方法。我不得不做 Remote 在装有 XP 的机器上进行调试,这给了我 Caliburn.Micro.dll 中“NullReferenceException”类型的第一次机会异常
,然后WindowsBase.dll 中类型为“NullReferenceException”的第一次机会异常
,然后崩溃并显示下面提供的日志。
无论如何,这是背景,我有一个 GridViewModel 和一个匹配的 GridView View ,它的主要部分是 WPF 的 DataGrid(因此得名),我想这就是问题所在:
<DataGrid CanUserAddRows="False" EnableRowVirtualization="True" Grid.Row="0" x:Name="DataGrid" AlternatingRowBackground="#EBEBEB" ScrollViewer.VerticalScrollBarVisibility="Visible"
ScrollViewer.CanContentScroll="True" ItemsSource="{Binding CollectionView}" IsReadOnly="True" RowDetailsVisibilityMode="VisibleWhenSelected" AutoGenerateColumns="False"
here->> cal:Message.Attach="[Event SelectionChanged] = [Action GridSelectionChanged($eventArgs)]">
稍后也在这里:
<DataGrid.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="cal:Message.Attach" Value="[Event PreviewMouseLeftButtonUp] = [Action PreviewMouseLeftButtonUp($view, $eventArgs)]"/>
</Style>
</DataGrid.CellStyle>
<DataGrid.ItemContainerStyle>
<Style TargetType="{x:Type DataGridRow}">
<Setter Property="cal:Message.Attach" Value="[Event PreviewMouseRightButtonUp] = [Action PreviewMouseRightButtonUp($source, $eventArgs)]"/>
</Style>
</DataGrid.ItemContainerStyle>
现在在 XP 下运行该应用程序并单击任意行,使用 DataGrid 的滚动条,有时甚至最大化窗口会给出以下结果:
[Exception] - Object reference not set to an instance of an object.
[Stack Trace] - at Caliburn.Micro.ActionMessage.<.cctor>b__14(ActionExecutionContext context)
at Caliburn.Micro.ActionMessage.<.cctor>b__15(ActionExecutionContext context)
at Caliburn.Micro.ActionMessage.UpdateContext()
at Caliburn.Micro.ActionMessage.ElementLoaded(Object sender, RoutedEventArgs e)
at Caliburn.Micro.View.<>c__DisplayClass3.<ExecuteOnLoad>b__0(Object s, RoutedEventArgs e)
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
at System.Windows.UIElement.RaiseEvent(RoutedEventArgs e)
at System.Windows.BroadcastEventHelper.BroadcastEvent(DependencyObject root, RoutedEvent routedEvent)
at System.Windows.BroadcastEventHelper.BroadcastLoadedEvent(Object root)
at MS.Internal.LoadedOrUnloadedOperation.DoWork()
at System.Windows.Media.MediaContext.FireLoadedPendingCallbacks()
at System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks()
at System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget)
at System.Windows.Media.MediaContext.RenderMessageHandler(Object resizedCompositionTarget)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
at System.Windows.Threading.DispatcherOperation.InvokeImpl()
at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
at System.Threading.ExecutionContext.runTryCode(Object userData)
at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Windows.Threading.DispatcherOperation.Invoke()
at System.Windows.Threading.Dispatcher.ProcessQueue()
at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
at System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
at System.Windows.Threading.Dispatcher.Run()
at System.Windows.Application.RunDispatcher(Object ignore)
at System.Windows.Application.RunInternal(Window window)
at System.Windows.Application.Run(Window window)
at MyAwesomeApplication.App.Main()
现在奇怪的是,如果我在应用程序的其他部分执行以下操作:
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="IsEnabled" Value="{Binding IsRowEnabled}"/>
<Setter Property="cal:Message.Attach" Value="[Event MouseDoubleClick] = [Action InvoiceRow()]"/>
</Style>
</ListView.ItemContainerStyle>
它在 XP 和 7 下都运行良好。
现在我的解决方法是摆脱我的 GridView.xaml 中的 Attach
ed 操作,转而支持代码隐藏中的良好 ol' 事件,这些事件依次调用查看模型,例如:
private void DataGridOnSelectionChanged(object sender, SelectionChangedEventArgs selectionChangedEventArgs)
{
var model = (GridViewModel) DataContext;
model.GridSelectionChanged(selectionChangedEventArgs);
}
我知道,它看起来不太漂亮,但目前我认为这是确保该应用程序在 XP 下运行的唯一方法。知道为什么它首先会崩溃吗?
[编辑]
虽然堆栈跟踪有点复杂,但似乎 NullReferenceException
确实发生了,但在我的代码中的某个地方,即在操作处理程序中。这只是我在其他应用程序中摆脱相同错误的初步想法......
最佳答案
我有同样的问题,但显然你不能在同一个控件上为两个不同的事件多次使用“cal:Message.Attach”。您可以尝试使用交互触发器:
关于c# - 使用 Message.Attach 时 Caliburn.Micro 和/或 WindowsBase 中的 NullReferenceException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12778176/
我正在使用 OpenXML SDK 将数据写入 excel 文件。现在,这在我的开发机器上运行良好。 上周,我们将代码带到生产服务器,正如预期的那样,它没有安装 OpenXML DLL。为了使其正常工
我正在尝试在 Visual Studio 2013 中加载解决方案,但我收到了这条消息: 当我单击“确定”时,它会显示另一条错误消息: Attempted re-targeting of the pr
我遇到了奇怪的编译时错误: 项目文件必须在引用列表中包含 .NET Framework 程序集“WindowsBase、PresentationCore、PresentationFramework”。
我是 StackOverflow 和一般编程的新手,如果我没有正确解释事情,请提前道歉。 我收到错误信息: An unhandled exception of type 'System.StackOv
我正在使用 WPF 创建一个应用程序,并且我有一个带有 Awesomium WebControl 的 UserControl。 当我将此 UserControl 的副本添加到我的主窗口时,我从 Win
将 ListBox 的 ItemsSource 绑定(bind)到 ObservableCollection 时出现此异常. 该集合混合了 {DependencyPropertyChangedEven
我有一个 .NET 4.0 WPF 项目。 当我打开 FileDialog 时,选择一些文件并按 OK 按钮,然后我在输出窗口中看到此错误: WindowsBase.dll 中发生了“System.C
我在 ASP.NET 应用程序中看到难以理解的编译错误。 Project file must include the .NET Framework assembly 'WindowsBase, Pre
今天早上买了一台新机器并安装了 Visual Studio 2012,这是我在启动时遇到的错误 --------------------------- Microsoft Visual Studio
我目前正在编写一个从文档中获取 XML 并将其显示在网页上的上传系统。 我面临的问题是,每当我添加网站的 XML 提取部分时,编译器都会返回标题中提到的错误。我已经通过手动和下拉菜单添加了 Windo
我的 View 模型中有这个属性。 public bool IsKWH { get { return _isKwh; } set { if (value.Equ
我目前正在尝试打开一个带有 System.Windows 的窗口。我包含了三个汇编引用: C:\Program Files (x86)\Reference Assemblies\Mic
我在 Windows 窗体应用程序中使用 C# 使用 WPF。 跟进问题。 Adding a collection of solid,dashed lines pen to a combo box 错
现在我有一个奇怪的。这只发生在 Windows XP 下的独立构建(调试/发布,无关紧要)。在 Windows 7 下工作得很好。无论如何,因为我必须确保该应用程序在 XP 下工作,所以我不得不做一些
我是一名优秀的程序员,十分优秀!