搜尋

首頁  >  問答  >  主體

實作Xamarin Forms中內聯CSS的覆蓋方法

<p>我開發了一個Xamarin Forms應用程式。對於CSS,我使用了Xamarin Forms提供的內聯樣式,並且該應用程式被各種客戶使用。但現在有一個客戶希望他的應用程式具有自訂的CSS(字體,顏色等)。我該如何覆蓋特定客戶的內聯樣式? </p> <p>我使用的內嵌樣式範例:</p> <pre class="brush:php;toolbar:false;"><Label Text="登入您的帳號" FontFamily="Playfair Display" TextColor="藍色" Horizo​​ntalOptions="CenterAndExpand" FontAttributes="Bold "/></pre> <p>我嘗試使用CSS文件,並在必要的字段上使用了!important,但沒有起作用。 </p>
P粉275883973P粉275883973500 天前466

全部回覆(1)我來回復

  • P粉295616170

    P粉2956161702023-08-16 11:46:18

    在Xamarin.Forms中,您可以使用層疊樣式表(CSS)來定義應用程式元素的樣式,包括自訂字體、顏色和其他屬性。如果您正在使用內聯樣式並希望允許特定客戶的自定義,您需要稍微修改您的方法。以下是您可以實現此目的的方法:

    1. 使用CSS建立全域樣式表

    在Xamarin.Forms專案中建立一個.css文件,並定義要全域應用的樣式。例如,該檔案可以命名為globalstyles.css。在此文件中,您可以使用類別選擇器定義樣式:

    .custom-label {
        font-family: "CustomFont";
        color: #FF6600;
        font-weight: bold;
        /* 在此添加更多自定义样式 */
    }
    1. 連結全域樣式表

    在Xamarin.Forms應用程式的App.xaml檔案中,您可以引用全域樣式表:

    <Application.Resources>
        <ResourceDictionary>
            <StyleSheet Source="globalstyles.css" />
        </ResourceDictionary>
    </Application.Resources>
    1. 為元素指派類別名稱

    修改您的XAML程式碼,包含在全域樣式表中定義的類別名稱:

    <Label Text="Login to your account" StyleClass="custom-label" HorizontalOptions="CenterAndExpand"/>
    1. 特定客戶端的覆蓋: 如果您希望允許特定用戶端具有自訂樣式,您可以在程式碼中有條件地套用樣式類別。例如,您可以有一個表示客戶端身分的屬性,並根據此屬性應用類別:
    // 假设您有一个标识客户端的属性
    bool isClient1 = DetermineIfClient1();
    
    // 应用适当的样式类
    if (isClient1)
    {
        customLabel.StyleClass.Add("custom-label-client1");
    }
    else
    {
        customLabel.StyleClass.Add("custom-label");
    }

    在此範例中,您將在CSS檔案中建立一個新樣式custom-label-client1,並為此客戶端定義特定樣式。

    1. 謹慎使用!important: 雖然使用!important可以強制覆蓋樣式,但通常最好透過結構化CSS和樣式的方式避免過多使用!important。而是使用特定的選擇器和適當的類別命名來有效地組織樣式。

    透過遵循這些步驟,您可以將樣式問題分開到全域樣式表中,並在保持更乾淨和可維護的程式碼庫的同時為不同的客戶端自訂樣式

    回覆
    0
  • 取消回覆