UserControl样式仅在设计器

时间:2016-01-27 21:24:16

标签: xaml windows-phone-8.1

我想在我的应用中设置页眉,图标或文字位于页面顶部50px高栏中心。可选择使用后退按钮。

出于这个原因,我在每个页面上使用UserControl,可以应用其中一种样式: PageHeaderStyle PageHeaderBackStyle

我对其中一个的实现如下(我的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的内容。这确实有效:构建设计器后显示页眉(在它只显示蓝色选区边框,但没有内容 - 它是透明的)。

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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