«Ссылка на объект не установлена ​​на экземпляр объекта» в PresentationFramework с Live ShapingC#

Место общения программистов C#
Ответить
Anonymous
 «Ссылка на объект не установлена ​​на экземпляр объекта» в PresentationFramework с Live Shaping

Сообщение Anonymous »

Я получаю нулевую ссылку в PresentationFramework на мою фильтрацию LifeShaping:

[img]https:// i.sstatic.net/Sy7w5.png[/img]


Трассировка стека не дает мне особых подсказок:

Код: Выделить всё

   at System.Windows.Data.ListCollectionView.RestoreLiveShaping()
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
at System.Windows.Threading.DispatcherOperation.InvokeImpl()
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext 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 System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(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.Window.ShowHelper(Object booleanBox)
at System.Windows.Window.ShowDialog()
at MVVMSeaCores.AppWindowManager.ShowDialog(Object rootModel, Object context, IDictionary`2 settings)
Эта последняя строка представляет собой вызов диалога, который показывает пользовательский интерфейс, содержащий флажок, привязанный к ShowOnGraph.

Я настраиваю живое формирование следующим образом, основываясь на логическом свойстве «ShowOnGraph»:

Код: Выделить всё

        KPIBarsView = new CollectionViewSource { Source = KPIBars }.View;
KPIBarsView.Filter = FilterBars;

//grouping
if (KPIBarsView != null && KPIBarsView.CanGroup == true)
{
KPIBarsView.GroupDescriptions.Clear();
KPIBarsView.GroupDescriptions.Add(new PropertyGroupDescription("KPIViewModel.ContextViewModel"));
}

//Live Filtering
ICollectionViewLiveShaping KPIBarsViewLiveShaping = KPIBarsView as ICollectionViewLiveShaping;
if (KPIBarsViewLiveShaping.CanChangeLiveFiltering)
{
KPIBarsViewLiveShaping.LiveFilteringProperties.Add("ShowOnGraph");
KPIBarsViewLiveShaping.IsLiveFiltering = true;
}
Элементы фильтруются так, как и следовало ожидать, если для ShowOnGraph установлено значение false. Однако, как только я пытаюсь снять фильтрацию с помощью ShowOnGraph=true, я получаю это исключение.

Это не дубликат «Что такое исключение нулевой ссылки». Я знаю, что такое исключение нулевой ссылки. Но в данном случае нулевая ссылка находится в Presentation Framework, в System.Windows.Data. Я понятия не имею, что такое null и почему (список не содержит нулевых записей, свойство фильтра является логическим и не может иметь значение null).

Нулевое значение Объект отсутствует в моем коде и недоступен для отладки. Все, что я получаю в отладчике, это то, где в отправке это произошло. В одном случае это находится в диалоговом окне, содержащем список, где я устанавливаю для него значение true:

Изображение


Нет ничего нулевого.

Я просто сделаю кнопку, чтобы установить ShowOnGraph=false, и посмотреть, где там возникает исключение.

Редактировать: да, оно возникает «нигде». Просто открывается на пустой странице «Режим разрыва» без содержания и указания места возникновения ошибки.

Подробнее здесь: https://stackoverflow.com/questions/371 ... nframework
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»