При изменении шаблона окна все элементы управления исчезли - PullRequest
1 голос
/ 14 мая 2009

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

<Style x:Key="SilverGreenWindowStyle" TargetType="{x:Type Window}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate>
                <Grid Background="{StaticResource SilverGreenBackground}" Width="503" Height="383">
                    <Rectangle Margin="192,86,21,119" Fill="{StaticResource SilverGreenRectangleBackground}" Width="200" Height="200"/>
                </Grid>    
            </ControlTemplate>
        </Setter.Value>    
    </Setter>
</Style>

и это заставляет элементы управления окнами становиться невидимыми. Как мне сделать их видимыми?

1 Ответ

5 голосов
/ 14 мая 2009

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

Если вы хотите, чтобы обычный контент отображался поверх прямоугольника, например, вы можете сделать это:

<Style x:Key="SilverGreenWindowStyle" TargetType="{x:Type Window}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate>
                <Grid Background="{StaticResource SilverGreenBackground}" Width="503" Height="383">
                    <Rectangle Margin="192,86,21,119" Fill="{StaticResource SilverGreenRectangleBackground}" Width="200" Height="200"/>
                    <ContentPresenter/>
                </Grid>    
            </ControlTemplate>
        </Setter.Value>    
    </Setter>
</Style>
...