2010-10-27 83 views
1

我在MenuItem的控件模板中使用Popup。如何限制彈出窗口的大小到屏幕

但是,我不知道菜單項中有多少項目。因此,彈出窗口可能不適合屏幕顯示,有些項目可能無法訪問。

我的解決方案是將MaxSize設置爲500,並將ItemsPresenter包裝在ScrollViewer中。

但是,這並沒有考慮到屏幕的大小。

有沒有一種方法可以指定彈出窗口應該儘可能大而不會超出屏幕邊界?

顯然,WPF足夠聰明,可以設置彈出的方向(上/下,左/右),以便它趨於居中。例如,如果彈出窗口位於屏幕的底部,它將在彈出位置上方彈出,而不是在彈出位置之下彈出。但我沒有看到關於最大尺寸的任何內容。

回答

1

你可以使用的SystemParameters.PrimaryScreenHeight組合和Popup的左上角點來計算你的房間有多少,並設置爲一體的Popup的內容MaxHeight

+0

感謝您的回答。但是,這不起作用,因爲彈出窗口可能會彈出屏幕上的任何位置。 – user380719 2010-10-27 18:07:30

+0

夠公平 - 更新了我的答案。 – 2010-10-27 18:10:36

+0

是的,那樣做。我希望有更容易的東西(內置) – user380719 2010-10-27 18:39:10

0

我相信你可以做到這一點的唯一方法是通過鉤住一個事件,也許在窗口或彈出窗口LayoutUpdated,並以編程方式設置寬度使用某種百分比計算。 MaxWidth on FrameworkElements只取離散值。