我有一个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
一起使用时是否存在错误?