Только DesignTime Ошибка: исключение WPF "StaticExtension" - PullRequest
3 голосов
/ 09 августа 2011

У меня есть этот ComboBox

<ComboBox Name="company" Width="120" 
                  HorizontalAlignment="Right" Margin="5" 
                  IsSynchronizedWithCurrentItem="True" 
                  ItemsPanel="{DynamicResource Virtualized}" 
                  ItemsSource="{x:Static local:Repository.Customers}" 
                  SelectedItem="{Binding Path=SelectedCustomer}" 
                  DisplayMemberPath="CM_FULL_NAME""/>

Это работает. Оно работает. За исключением дизайнера, который не позволяет мне что-либо делать из-за ошибки:

ArgumentException was thrown on "StaticExtention": Exception has been thrown by the target of an invocation.

Деталь

The specified named connection is either not found in the configuration, not intended to be used with the EntityClient provider, or not valid.

Я пробовал несколько вещей в статическом классе, чтобы пропустить конструктор во время разработки, но ни одна из них не исправляет ошибку:

if (LicenseManager.UsageMode == LicenseUsageMode.DesignTime)
if (DesignerProperties.GetIsInDesignMode(this))
if (System.Reflection.Assembly.GetExecutingAssembly().Location.Contains("VisualStudio"))

И возвращение в конструктор, если любое из них верно. Все еще получаю ошибку.

Редактировать : Не уверен, имеет ли это какое-то значение, но класс статического репозитория использует EF4 для получения из базы данных.

Edit2 : Также пытался ItemsSource {Binding} для статических списков, все еще получаю ту же ошибку. Обратите внимание, что называть его репозиторием неправильно, списки загружаются при запуске и никогда не меняются. Ниже ответ не работает, все еще пытаюсь понять это.

Edit3 : Предложение Томаса отладить режим проектирования не выполнимо. Я использую VS2010 Express, и в меню инструментов нет опции присоединения к процессу. Я до сих пор не знаю, почему это ломает конструктор и работает во время выполнения.

Ответы [ 2 ]

3 голосов
/ 09 августа 2011

В получателе свойства Customers попробуйте добавить этот код:

if (DesignerProperties.GetIsInDesignMode(new DependencyObject()))
    return null;
2 голосов
/ 10 августа 2011

Томас ответ:

if (DesignerProperties.GetIsInDesignMode(new DependencyObject()))
return null;

Работает в статическом конструкторе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...