Xamarin.Forms ControlTemplate不呈现背景

时间:2018-11-12 17:57:44

标签: c# xamarin.forms background-color controltemplate

我有一个ControlTemplate,它不显示它的Background颜色。我没有在代码中或其他位置设置任何内容,所以对此我感到非常困惑。

ControlTemplate

<ControlTemplate  ... >
<RelativeLayout BackgroundColor="Green">

    <Grid BackgroundColor="Black"
          RelativeLayout.WidthConstraint="{ConstraintExpression Type=RelativeToParent,Property=Width,Factor=1,Constant=0}"
          RelativeLayout.HeightConstraint="{ConstraintExpression Type=RelativeToParent,Property=Height,Factor=1,Constant=0}">
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="auto" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

        <ContentPresenter Grid.Row="1"
                          Grid.Column="1" 
                          BackgroundColor="Blue"/>

    </Grid>

</RelativeLayout>
</ControlTemplate>

视图:

<ContentView ...
    ControlTemplate="{x:TemplateBinding templates:OverlayViewTemplate}">

<ContentView.Content>

    <Grid x:Name="GrdBase"
          BackgroundColor="White"
          VerticalOptions="Center"
          HorizontalOptions="Center">

        <Grid.GestureRecognizers>
            <TapGestureRecognizer Command="{Binding ClickCommand}" />
        </Grid.GestureRecognizers>

        <Grid.RowDefinitions>
            <RowDefinition Height="auto" />
            <RowDefinition Height="10" />
            <RowDefinition Height="auto" />
        </Grid.RowDefinitions>

        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="100" />
        </Grid.ColumnDefinitions>

        <StackLayout Grid.Row="0"
                     Grid.Column="0">
            <Label x:Name="LblTest"
                   Text="Hello Xamarin.Forms!" />
        </StackLayout>
    </Grid>

</ContentView.Content>
</ContentView>

我在这里错过什么吗?还是模板无法呈现背景色?

编辑

经过大量测试,我发现ContentView没有使用模板。即使我在App.xaml中定义模板并通过ControlTemplate="{StaticResource ViewTemplate}"进行引用。我的页面使用了另一个模板,并且没有问题,因此在与View一起使用时是否存在错误?

0 个答案:

没有答案