Как заставить Visual Studio 2010 игнорировать объявленный XFL WPF DataContext во время разработки? - PullRequest
0 голосов
/ 22 июля 2010

Довольно часто я настраиваю WPF UserControl с декларативным DataContext:

<UserControl...>
    <UserControl.DataContext>
        <local:SomeModel x:Name="Model" />
    </UserControl.DataContext>
</UserControl>

В режиме разработки Visual Studio попытается создать экземпляр DataContext. Однако когда DataContext извлекает данные из файла конфигурации, Visual Studio 2010 выдаст ошибку, такую ​​как:

Невозможно создать экземпляр "SomeModel".

Когда выдается ошибка, время разработки мало или вообще не имеет значения. Если я закомментирую DataContext, то режим разработки Visual Studio 2010 работает должным образом, без DataContext.

Есть ли способ заставить Visual Studio игнорировать объявленный XAML DataContext во время разработки?

Ответы [ 2 ]

4 голосов
/ 22 июля 2010

Переопределить (или скрыть с помощью «нового») ваш контекст данных и использовать System.ComponentModel.DesignerProperties.GetIsInDesignMode (), чтобы вернуть соответствующий контекст.

Для бонусных баллов оберните ваш условный разрыв вдирективы препроцессора и / или использование разумного ConditionalAttribute () для обеспечения того, чтобы этот дополнительный шум не превращался в производственную среду.

1 голос
/ 22 июля 2010

Не уверен, что полностью понимаю, но я использую этот метод расширения, чтобы определить, когда дизайнер запускает мой код:

public static class Extensions
{
    public static bool IsDesigner( this Process process )
    {
        if ( process.MainModule != null )
            return ( process.MainModule.ModuleName.Contains( "devenv.exe" ) );

        return false;
    }
}
...