Xaml 使用样式设置页面的背景色
我在Xaml 使用样式设置页面的背景色,xaml,xamarin,xamarin.forms,Xaml,Xamarin,Xamarin.forms,我在App.xaml中定义了以下显式样式: <Application.Resources> <ResourceDictionary> <Style TargetType="ContentPage" x:Key="PageStyle"> <Setter Property="BackgroundColor" Value="#ff0000" /> </Style> </Resour
App.xaml
中定义了以下显式样式:
<Application.Resources>
<ResourceDictionary>
<Style TargetType="ContentPage" x:Key="PageStyle">
<Setter Property="BackgroundColor" Value="#ff0000" />
</Style>
</ResourceDictionary>
</Application.Resources>
但是页面的背景没有改变。它始终显示平台的默认背景色。如果我将样式用于按钮
,则会应用该样式。我用NavigationPage
,ContentPage
,Page
,VisualElement
尝试过,但背景始终是默认背景
如果我显式地将颜色设置为
<ContentPage.BackgroundColor>
<Color>Red</Color>
</ContentPage.BackgroundColor>
已应用颜色。将样式应用于内容页,如下所示:
<ContentPage (...) Style="{StaticResource PageStyle}">
我认为这种行为的原因是
SomePage
(在我的例子中)是ContentPage
的子类。我发现:
但是,该样式不应用于CustomEntry实例,它是一个子类条目
所以隐式样式不适用于子类。但是每个页面都是
ContentPage
中的一个子类。您只能使用中的解决方案。您可以全局分配它,您必须将ApplyToDerivedTypes
设置为true。以下是一个例子:
<Style TargetType="ContentPage" ApplyToDerivedTypes="True">
<Setter Property="BackgroundColor" Value="#4A4A4A" />
</Style>
现在,所有继承ContentPage的类都将具有此背景色。强制性问题:背景未在设计器中设置?目前没有可用的设计器。只能使用XML或C#。换言之:BackgroundColor依赖项属性是否在XML或C#中的任何位置显式设置?BackgroundColor依赖项属性的确切含义是什么?我已经在应用程序级别(使用后台设置器)定义了一个样式,我希望在页面上使用它。在本例中,背景颜色是用XML设置的。这可能有助于主题。您知道为什么从显式样式转换为隐式样式对页面不起作用吗?遗憾的是,我不知道。如果不想在每个ContentPage上设置背景,请创建一个继承自ContentPage的新类,使用App.xaml中的样式在其xaml/构造函数中设置背景,然后使用该类而不是ContentPage。这有点天真,但如果最简单的解决方案不起作用,那么。。。这里有一个关于这种行为的页面,但可能最后一篇文章是你的:直截了当的回答。。。谢谢
<ContentPage (...) Style="{StaticResource PageStyle}">
<Style TargetType="ContentPage" ApplyToDerivedTypes="True">
<Setter Property="BackgroundColor" Value="#4A4A4A" />
</Style>