用于ContentPage中背景的Xamarin-Xaml样式

本文关键字:Xamarin-Xaml 样式 背景 ContentPage 用于 | 更新日期: 2023-09-27 18:22:48

刚在Xamarin工作,如果我尝试为ContentPage设置样式,似乎什么都不会发生

App.Xaml资源字典中的Xaml:

<Style TargetType="ContentPage">
    <Setter Property="BackgroundColor" Value="#f8f8f8"/>
</Style>

我知道app.xaml样式正在被阅读。我有一个按钮样式已经在全球范围内应用。但我似乎无法影响ContentPage的任何更改。没有任何错误报告。

如何全局设置背景颜色?

我读到这可能是一个bug,但那是一年前的事了。如果它仍然是一个bug,有解决方法吗?

用于ContentPage中背景的Xamarin-Xaml样式

App.xaml中的以下代码适用于我:

<Style TargetType="ContentPage" ApplyToDerivedTypes="True">
   <Setter Property="BackgroundColor" Value="Lime" />
</Style>

注:

  • 您不应该在Style中使用属性x:Key
  • 您应该添加ApplyToDerivedTypes="True"

我在找到了解决方案https://putridparrot.com/blog/styles-in-xamarin-forms/

根据@Tomasz Kowalczyk的提示,使用这个相当不完整的帖子中的示例xaml:

在app.xaml ResourceDictionary中,使用以下样式:

<Style x:Key="defaultPageStyle" TargetType="ContentPage">
   <Setter Property="BackgroundColor" Value="#f8f8f8"/>
</Style>

基类称为BaseContentPage

public class BaseContentPage : ContentPage
{
    public BaseContentPage()
    {
        var style = (Style)Application.Current.Resources["defaultPageStyle"];
        Style = style;
    }
}

然后在每个xaml.cs类中将其全部绑定在一起:

namespace MyNamespace
{
    public partial class MyXamlPage: BaseContentPage

和.xaml文件

<local:BaseContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:local="clr-namespace:MyNamespace;assembly=MyNamespace"
         x:Class="MyNamespace.MyXamlPage"