2017-09-12 1 views
0

현재 나는이있다 : 축소 된 위치에 ReportForm 위치하도록되어OnAppearing() 메서드에서보기의 경계를 읽으려면 어떻게해야합니까?

protected override void OnAppearing() 
{ 
    var collapsedHeight = ReportFormButtonBar.Height; 
    var reportFormExpandedPosition = ReportForm.Bounds; 
    var reportFormCollapsedPosition = ReportForm.Bounds; 

    reportFormCollapsedPosition.Y = (ReportForm.Height - collapsedHeight); 
     reportFormExpandedPosition.Y = 0; 

    ReportForm.TranslateTo(reportFormCollapsedPosition.X, reportFormCollapsedPosition.Y, 200, Easing.CubicOut); 

    base.OnAppearing(); 
} 

. 그러기 위해서는 몇 가지 경계를 읽어야합니다. 그러나 경계는 모두 너비와 높이가 -1 인 x : 0, y : 0으로 설정됩니다. 나는 오랫동안 이것으로 고투하고 있었고 어떤 대답도 찾을 수 없다.

TLDR :이 방법으로 올바른 범위를 읽으려면 어떻게해야합니까? 또는보기 설정을 수행하는 다른 방법이 있습니까?

답변

1

보기 경계로 작업하려면 OnSizeAllocated 또는 SizeChanged 이벤트를 재정의하는 것이 좋습니다.

//in view class 
protected override void OnSizeAllocated(double width, double height) 
{ 
    base.OnSizeAllocated(width, height); 

    // retreive view bounds here.. 
} 

//OR.. 

ReportForm.SizeChanged += (sender, e) => { 
    if(Width > 0 && Height > 0) 
    { 
     // retreive view bounds here..  
    } 
}; 
관련 문제