我如何将元素的宽度和高度传递给 XamarinForms 中的效果或自定义渲染器

How would i pass element's width and height to an effect or a custom renderer in XamarinForms

我无法在附加到元素的效果中获取元素的宽度和高度。我尝试了所有方法:

void UpdateSize()
{
      var _1 = ((BoxView)Element).Width; //-1
      var _2 = ((BoxView)Element).WidthRequest; //-1
      var _3 = ((BoxView)Element).Height; //-1
      var _4 = ((BoxView)Element).HeightRequest; //-1
      var _5 = Control.Width; //NaN (UWP). NaN is not a number
      var _6 = Control.ActualWidth; //0
      var _7 = Control.Height; //Nan (UWP). NaN is not a number
       var _8 = Control.ActualHeight; //0
}

我什至尝试将宽度和高度作为附加属性传递给效果。 我需要宽度和高度,因为我正在创建投影并且我必须将 SpriteVisual 的大小调整为与元素相同的大小。

可能是元素在应用 renderer/effects 之后绘制,所以我们还没有尺寸。如果是这样,如何解决这个问题?

我建议在附加效果时连接 ElementSizeChanged 事件,然后在它触发后创建阴影。此外,请确保在分离效果时取消订阅该事件。