Регистрация слишком большого количества преобразователей значений в App.xaml.cs приводит к сбою
Я добавляю свои конвертеры значений в App.xaml.cs, но когда я добавляю еще один, это дает мне исключение при запуске приложения, которое я не знаю, как обрабатывать. Это в App.gics:
Исключение:
#if DEBUG && !DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION
UnhandledException += (sender, e) =>
{
if (global::System.Diagnostics.Debugger.IsAttached) global::System.Diagnostics.Debugger.Break();
};
#endif
Вот мои конвертеры в App.xaml.cs
<Application x:Class="cMC.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:myApp">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Assets/ResourceDictionaries/ResrcDict1.xaml" />
<ResourceDictionary Source="/DataTemplates/DataTemplates.xaml" />
</ResourceDictionary.MergedDictionaries>
<vm:ViewModelLocator x:Key="Locator" xmlns:vm="using:myApp.ViewModel" />
<ic:InverseBooleanConverter x:Key="InverseBoolToVisibility" xmlns:ic="using:myApp.Helpers"/>
<mc:SegmentPartWrapper x:Key="SegmentPartWrapper" xmlns:mc="using:myApp.ViewModel"/>
<mc:SegmentDateCNVRTR x:Key="SegmentDateCNVRTR" xmlns:mc="using:myApp.ViewModel"/>
<mc:RailIconBooleanConverter x:Key="RailIconBooleanConverter" xmlns:mc="using:myApp.ViewModel"/>
<mc:CarIconBooleanConverter x:Key="CarIconBooleanConverter" xmlns:mc="using:myApp.ViewModel"/>
</ResourceDictionary>
Это вызывает проблему "CarIconBooleanConverter", но его код в ViewModel точно такой же, как "RailIconBooleanConverter"
<mc:CarIconBooleanConverter x:Key="CarIconBooleanConverter" xmlns:mc="using:myApp.ViewModel"/>
РЕДАКТИРОВАТЬ:
Я удалил один из других конвертеров из App.xaml.cs и "CarIconBooleanConverter" работает нормально. Это потому, что конвертеров слишком много?
1 ответ
Казалось бы, есть проблема с вашим классом MVVM Light, ViewModelLocator. Вы, возможно, не настроили это должным образом. Это или вы не объявили ServiceLocationProvider по умолчанию, как сказано в исключении.
static ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
}
Посмотрите, есть ли это в вашем классе ViewModelLocator.