作爲嘗試學習Xamarin的另一步,我正在開發一個測試項目,以瞭解如何在Xamarin多平臺項目上繪製形狀(完整的github代碼here)。在Xamarin中覆蓋ViewRenderer
該項目試圖重現這個其他github項目(鏈接here),但使用新的空白Xamarin Forms項目來代替。然後,我嘗試將原始代碼的各部分放在一起,並嘗試理解它們。
專注於Android,將代碼放在一起後,形狀繪製不正確。我試圖解決這個問題,我認爲這一切都歸結於此:
原始項目中出現OnElementChanged
的斷點(請參閱源文件here)。但是在我的新項目中沒有達到OnElementChanged
的斷點(請參閱源文件here)。
SharpRenderer
存在於.Droid和.iOS項目中,但我無法理解代碼是如何互連的。我似乎沒有發現兩個代碼之間有意義的區別,這些代碼可以幫助我理解正在發生的事情。
SharpRenderer
代碼達到一個案件,但不是對方稱:
public class ShapeRenderer : ViewRenderer<ShapeView, Shape>
{
public ShapeRenderer()
{
}
protected override void OnElementChanged(ElementChangedEventArgs<ShapeView> e)
{
base.OnElementChanged(e);
if (e.OldElement != null || this.Element == null)
return;
SetNativeControl(new Shape(Resources.DisplayMetrics.Density, Context)
{
ShapeView = Element
});
}
}
「_See source file here_」在某個點上肯定是斷開的鏈接。請直接在問題中添加任何必需的和相關的信息。 – Mackan
我已經添加了.Droid項目的'ShapeRenderer'代碼。請讓我知道在主要帖子中是否需要任何其他代碼(因爲錯誤在於項目之間的交互,所以我很難確定哪些部分是必需的,哪些部分不是)。 –
你錯過了這行代碼:'[assembly:ExportRenderer(typeof(ShapeView),typeof(ShapeRenderer))]''。它位於命名空間之上,非常重要。 'ExportRenderer'提醒Xamarin.Forms使用你的類來渲染指定的視圖類,否則Xamarin.Forms將嘗試使用默認的渲染器。 – dylansturg