컨트롤을 추가/제거하여 페이지를 약간 변경하고 레이아웃이 정해 졌을 때만 (레이아웃 된 모든 요소 등) 코드를 계속 사용하고자합니다.XAML 레이아웃이 완료 될 때까지 기다림
어떻게하면됩니까? 레이아웃이 완료되면 내가 할 수있는 작업이 있습니까?
(현재 사용 수율 및 기타 트릭,하지만 그들은 모두 나를 더러운 느낌)
컨트롤을 추가/제거하여 페이지를 약간 변경하고 레이아웃이 정해 졌을 때만 (레이아웃 된 모든 요소 등) 코드를 계속 사용하고자합니다.XAML 레이아웃이 완료 될 때까지 기다림
어떻게하면됩니까? 레이아웃이 완료되면 내가 할 수있는 작업이 있습니까?
(현재 사용 수율 및 기타 트릭,하지만 그들은 모두 나를 더러운 느낌)
당신은 TaskCompletionSource<T>
를 사용하여 모든 이벤트 주위에 Task
을 구축 할 수 있습니다.
귀하의 경우에는 UIElement.LayoutUpdated
이 원하는 이벤트 일 수 있습니다 (WPF 레이아웃 세부 정보가 내 장점이 아님).
public static Task LayoutUpdatedAsync(this UIElement element)
{
var tcs = new TaskCompletionSource<object>();
EventHandler handler = (s, e) =>
{
element.LayoutUpdated -= handler;
tcs.SetCompleted(null);
};
element.LayoutUpdated += handler;
return tcs.Task;
}
는 그런 다음 await
에 해당 이벤트의 다음 인스턴스를이 방법을 사용할 수 있습니다 : 여기
await myUiElement.LayoutUpdatedAsync();
LayoutUpdated가 충분하지 않은 것 같습니다. 여러 번 실행될 수 있습니다.하지만 고마워요. –
참고로 저는 [UWP 질문] (https://stackoverflow.com/questions/47776473/how-to-create-variable-number-of-richtextboxoverflow-elements/47803012#47803012)과 거의 동일한 솔루션을 제안했습니다. 그러나 그 경우 사건을 기다리는 것만으로는 효과가 없었습니다. 나는 또한 강제로 UI 더미를 펌핑 할 수있는 더미를 삽입해야했다. –
이 도움이 될 수 있습니다 http://stackoverflow.com/a/3684356/276994 – Vlad