UserControl 样式仅在设计器中可见

UserControl style only visible in designer

我希望我的应用程序中的页眉带有一个图标或文本,位于页面顶部 50 像素高的栏中。可选择带有后退按钮。

出于这个原因,我在每个页面上都使用了一个 UserControl,它应用了其中一种样式:PageHeaderStylePageHeaderBackStyle.

我对其中之一的实现如下(我的 App.xaml 中的样式定义):

   <Style x:Key="PageHeaderBaseStyle" TargetType="UserControl">
        <Setter Property="HorizontalAlignment" Value="Stretch" />
        <Setter Property="VerticalAlignment" Value="Top" />
        <Setter Property="Height" Value="50" />
        <Setter Property="Width" Value="NaN" />
        <Setter Property="Background" Value="{StaticResource CDColor}" />
    </Style>

    <Style x:Key="PageHeaderStyle" TargetType="UserControl" BasedOn="{StaticResource PageHeaderBaseStyle}">
        <Setter Property="Content">
            <Setter.Value>
                <Grid Background="{StaticResource CDColor}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" DataContext="{StaticResource MainPageModel}">
                    <TextBlock Style="{StaticResource PageHeaderTextBlockStyle}" Text="{Binding Title}" Visibility="{Binding TitleVisibility}" />
                    <Image Style="{StaticResource PageHeaderIconStyle}" Source="{Binding Icon}" Visibility="{Binding IconVisibility}" />
                </Grid>
            </Setter.Value>
        </Setter>
    </Style>

按应有的方式应用:

<UserControl Style="{StaticResource PageHeaderStyle}" />

现在我首先使用了 "Template" 并应用了带有网格组件的 DataTemplate。但这没有用。然后我改成直接设置UserControl的Content。这确实有效:在构建设计器后显示页眉(之前它只显示蓝色选择边框,但没有内容 - 它是透明的)。

但是,一旦我开始在模拟器上调试应用程序,它就会消失,运行 应用程序只会在它应该出现的地方显示一个空白点。

为什么会这样?我的意思是毕竟设计师已经展示了它,为什么它会消失呢?

仅供参考:我没有收到任何具有约束力的例外情况或任何其他例外情况。它只是没有出现。

PS:我尝试将背景设置为基本样式,同时将网格的背景设置为透明。这也不起作用 - 只有一个空白点。

解决了问题:最好的方法可能是使用 ContentControl。但是,使用 Content 属性 无效。您必须使用 ContentTemplate 属性。使用那个确实很好用。