Отключить DataContext для VS Disigner - PullRequest
0 голосов
/ 29 августа 2011

Я хотел бы отключить создание экземпляра DataContext в конструкторе WPF (в VS не смешивать).До сих пор я делал следующий код:

<Window ....
d:DataContext="{d:DesignInstance local:Class1, IsDesignTimeCreatable=True}">
    <Window.DataContext>
        <local:Class2 d:IsDesignTimeCreatable="False/>
    </Window.DataContext>
</Window>

Пока данные из Class1 используются во время разработки, экземпляр Class2 все еще создается.

Я знаю, что яМожно использовать некоторый код, чтобы проверить, что я нахожусь во время разработки, но я хочу решить эту проблему только через XAML!

Есть предложения?

1 Ответ

1 голос
/ 29 августа 2011

Вы можете посмотреть на прикрепленное свойство DesignerProperties.IsInDesignMode. Вот несколько предложений, но ни одно из них не кажется очень чистым, и, в конце концов, я думаю, что использование пары строк в коде - самое простое решение.

  • Я не думаю, что объект DataContext будет создан, если он установлен в Style (но это может измениться в будущем обновлении VS Designer)
  • Вы можете привязать DataContext к IsInDesignMode с помощью конвертера, который возвращает экземпляр Class2 или ноль в зависимости от значения IsInDesignMode
  • Используйте DataTrigger. Только Xaml, но способ много кода ..

Пример * * тысяча двадцать-один

<Window ...
        xmlns:pf="clr-namespace:System.ComponentModel;assembly=PresentationFramework">
    <Window.Style>
        <Style TargetType="Window">
            <Style.Triggers>
                <DataTrigger
                    Binding="{Binding RelativeSource={RelativeSource Self},
                                      Path=(pf:DesignerProperties.IsInDesignMode)}"
                    Value="False">
                    <Setter Property="DataContext">
                        <Setter.Value>
                            <local:Class2 />
                        </Setter.Value>
                    </Setter>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Window.Style>
    <!--...-->
</Window>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...