Условный XAML - PullRequest
       20

Условный XAML

3 голосов
/ 26 мая 2010

Для простоты разработки я использую ViewBox, чтобы обернуть весь контент в окне. Это связано с тем, что мой компьютер для разработки имеет меньший экран, чем компьютер для развертывания, поэтому использование ViewBox позволяет лучше понять пропорции. Очевидно, что нет причин присутствовать в версиях кода Release. Есть ли простой способ условно включить / исключить эту «упаковку» ViewBox в XAML?

* 1003 Е.Г. *

<Window>
  <Viewbox>
    <UserControl /*Content*/>
  </Viewbox>
</Window>

1 Ответ

3 голосов
/ 26 мая 2010

создать два шаблона управления в словаре ресурсов где-нибудь доступным.

они должны выглядеть так

<ControlTemplate x:key="debug_view">
    <ViewBox>
        <ContentPresenter Content={Binding} />
    </ViewBox>
</ControlTemplate>
<ControlTemplate x:key="release_view">
    <ContentPresenter Content={Binding} />
</ControlTemplate>

тогда вы можете использовать это в вашем главном представлении

<Window>
    <ContentControl Template="{StaticResource debug_view}">
        <UserControl /*Content*/ ...>
    </ContentControl>
</Window>

затем для переключения назад и вперед просто измените ключ поиска в StaticResource Binding с 'debug_view' на 'release_view'

если вы хотите сделать его более динамичным, вы можете сделать следующее:

<Window>
    <ContentControl Loaded="MainContentLoaded">
        <UserControl /*Content*/ ...>
    </ContentControl>
</Window>

тогда в вашем коде

void MainContentLoaded(object sender, RoutedEventArgs e)
{
    ContentControl cc = (ContentControl) sender;
#if DEBUG
    sender.Template = (ControlTemplate) Resources["debug_view"];
#else
    sender.Template = (ControlTemplate) Resources["release_view"];
#endif
}

таким образом, в зависимости от того, определен ли символ DEBUG или нет, будут выбраны различные шаблоны.

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