如何獲取 WrapPanel 內元素的坐標?我已經嘗試過 myElementInsidenList.TransformToAncestor(rootView).Transform(new Point(0, 0)) 但沒有作業。
<ScrollViewer x:Name="myScrollViewer" Background="#2B2B2B" VerticalScrollBarVisibility="Auto">
<ScrollViewer.Template>
<ControlTemplate TargetType="ScrollViewer">
<Border CornerRadius="12" Background="{TemplateBinding Background}">
<ContentPresenter VerticalAlignment="Top" HorizontalAlignment="Left" />
</Border>
</ControlTemplate>
</ScrollViewer.Template>
<WrapPanel x:Name="nList" VerticalAlignment="Top" />
</ScrollViewer>
更多背景
uj5u.com熱心網友回復:
你必須在Visual元素被渲染之前等待。否則沒有位置可檢索。
另請注意,您的 doAnimationAndAddValue() 方法必須回傳一個Task而不是void,如果它是一個async不是事件處理程式的方法。
只需收聽FrameworkElement.Loaded事件:
async Task doAnimationAndAddValue()
{
TextBox targetInput = CloneXaml(cloneInputForAnimation);
nList.Children.Add(targetInput);
targetInput.Loaded = OnTargetInputLoaded;
}
private void OnTargetInputLoaded(object sender, EventArgs e)
{
var targetInput = sender as FrameworkElement;
targetInput.Loaded -= OnTargetInputLoaded;
Point targetPositionRelativeToWrapPanel =
targetInput.TransformToVisual(this.nList).Transform(new Point(0, 0));
Point targetPositionRelativeToMainWindow =
targetInput.TransformToVisual(this).Transform(new Point(0, 0));
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/342850.html
上一篇:您如何找到PC上的GPU數量?
