簡體   English   中英

按鈕的Xamarin自定義渲染器(iOS)

[英]Xamarin Custom Renderer for Button (iOS)

我已經為iOS宣布了一個自定義渲染器(和Android - 工作正常)。

自定義渲染器主要設置背景顏色和文本顏色。

設置文本顏色適用於啟用和禁用狀態,但我在設置不同狀態下按鈕的背景顏色時遇到問題。

我無法找到任何關於Xamarin自定義渲染器的文檔,這是Xamarin的一個已知錯誤,我無法在Visual Studio中為iOS類工作任何intellisense,到目前為止我已經使用了我找到的資源關於這個話題。

    public class MyButtonRenderer : ButtonRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
        {
            base.OnElementChanged(e);

            if (Control != null)
            {
                Control.BackgroundColor= UIColor.FromRGB(235, 115, 17);

                Control.SetTitleColor(UIColor.FromRGB(255, 255, 255),UIControlState.Normal);
                Control.SetTitleColor(UIColor.FromRGB(0, 0, 0),UIControlState.Disabled);
            }
        }
    } 

我希望能夠將背景顏色更改為我設置的其他顏色 - 如果按鈕UIControlStateDisabled

在此圖像中,按鈕使用自定義渲染器。 頂部按鈕被禁用,底部被啟用。 正如您可能猜到的那樣,我想將禁用的按鈕設置為灰色。

頂部按鈕已禁用,已啟用底部。

我相信這一定非常簡單,但缺乏文件和非智能感知問題阻礙了我的努力。

您可以覆蓋OnElementPropertyChanged以跟蹤屬性更改。

protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
{
    base.OnElementChanged(e);

    ....

    UpdateBackground();
}

protected override void OnElementPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
    base.OnElementPropertyChanged(sender, e);

    if (e.PropertyName == VisualElement.IsEnabledProperty.PropertyName)
        UpdateBackground();
}

void UpdateBackground()
{
    if (Control == null || Element == null)
        return;

    if (Element.IsEnabled)
        Control.BackgroundColor = ..;
    else
        Control.BackgroundColor = ..;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM