通过更改窗口模板,所有控件都消失了

Ton*_*ony 1 .net c# wpf controltemplate

我想更改我的窗口模板,例如:

<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>
Run Code Online (Sandbox Code Playgroud)

这会导致Windows控件变得不可见.如何让它们可见?

Sam*_*ack 5

您需要在模板中包含一个元素,以告诉Window在哪里显示它的内容.ContentPresenter为您提供了神奇的功能:它会在您在树中插入Window的内容中呈现Window的内容.

例如,如果希望常规内容显示在Rectangle之上,则可以执行以下操作:

<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>
Run Code Online (Sandbox Code Playgroud)