簡體   English   中英

編輯和使用Xamarin.Forms源代碼

[英]Editing and using the Xamarin.Forms source code

我想知道是否可以編輯Xamarin.Forms源代碼 ,然后像在xamarin.forms項目中通常那樣使用編輯后的源代碼

基本上,我的目標是更改PhoneMasterDetailRenderer以便更改“母版”頁面的寬度值。 (這是屏幕的百分比,為0.8 ,因此通過更改它應該調整母版的大小?)

這是我要更改的代碼部分:

    void LayoutChildren(bool animated)
    {
        var frame = Element.Bounds.ToRectangleF();
        var masterFrame = frame;
        masterFrame.Width = (int)(Math.Min(masterFrame.Width, masterFrame.Height) * 0.8);

        ...
    }

很長時間以來,無法更改母版的寬度一直是一個問題,希望可以解決該問題。

謝謝,丹尼爾。

我不建議您編輯源代碼。 但是我們也可以創建自己的MasterDetailPage的Renderer。 可能有些困難,讓我們逐步進行此操作。

首先,在我們自己的MasterDetailPage類中定義BindableProperty ,例如:

public readonly static BindableProperty WidthRatioProperty =
            BindableProperty.Create("WidthRatio",
            typeof(float),
            typeof(MyMasterDetailPage),
            (float)0.2);

public float WidthRatio
{
    get
    {
        return (float)GetValue(WidthRatioProperty);
    }
    set
    {
        SetValue(WidthRatioProperty, value);
    }
}

其次,嘗試創建自己的渲染器,而不是使用表單的默認渲染器。 在此處發布有關自己的渲染器的源代碼。 在此類中,我使用widthRatio更改母版的寬度。 可以在以下位置設置此屬性:

void HandlePropertyChanged(object sender, PropertyChangedEventArgs e)
{
    ...
    else if(e.PropertyName == "WidthRatio")
    {
        widthRatio = ((MyMasterDetailPage)Element).WidthRatio;
    }
}

最后,創建繼承上述渲染器的自定義渲染器,如下所示:

[assembly: ExportRenderer(typeof(MyMasterDetailPage), typeof(MyMasterDetailPageRenderer))]
namespace MasterDetailDemo.iOS
{
    public class MyMasterDetailPageRenderer : MyPhoneMasterDetailRenderer
    {
    }
}

您可以在表單的MasterDetailPage設置屬性WidthRatio的值,以立即更改寬度。 您可以運行我的演示進行測試。

此外,如果您要在Android上執行此操作,請參考此線程

暫無
暫無

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

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