默認情況下,Popup
控件左對齊。其左邊緣與其父邊的左邊緣對齊。動態設置彈出位置/佈局
我想要做的是讓控件右對齊,使其右邊緣與其容器的右邊緣對齊。
我希望這是動態的,因爲我動態綁定數據,我不知道彈出窗口有多大。
我試圖與Opened
,SizeChanged
和Loaded
事件打得到Child
的寬度,將其設置爲HorizontalOffset
但似乎時間問題。基本上,它在第一次加載控件時運行正常,然後從未(之後HorizontalOffset
設置爲0)。
這是一個錯誤?我做錯了嗎?
編輯我明白了。看起來有時間問題。如果我勾了Opened
事件,並設置HorizontalOffset
異步使用Dispatcher
,那麼它的工作原理:(
private static void OnPopupOpened(object sender, System.EventArgs e)
{
var popup = (Popup)sender;
popup.Dispatcher.BeginInvoke(() => popup.HorizontalOffset = -popup.ActualWidth);
}
EDIT 2我現在意識到,我正在做一些愚蠢的事,我想的的Popup
ComboBox
右對齊我沒有看到它在ArrangePopup
私人方法調用中被重新初始化
我試圖從ComboBox
繼承來覆蓋放置函數,但我必須做一些錯誤的事情,因爲它似乎仍然沒有儘管我工作errode調用方法ArrangePopup
乾杯。