[英]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.