2013-10-09 70 views
1

我在WPF中編寫了一個對話框,我希望從屏幕邊緣進入該對話框,並在顯示時向中心生成動畫。即使窗口被調整大小,對話框也需要保持位於屏幕中央。這看起來應該是死的 - 在WPF中很簡單,但我仍然沒有想到實現這種效果的可靠方法。我寧願使用純粹的「佈局」方法,而不是使用綁定來計算對話框的位置。將屏幕邊緣的元素設置爲中心

在HTML/CSS中,我只是簡單地將對話框的left CSS屬性0'設置爲50% ...有沒有類似的方法可以在WPF中實現這種效果?

+0

。你看混合在所有?它的免費和可以故事董事會這樣在10秒 –

+0

只需在'Loaded'事件上使用'Trigger'在'Windows'' Left'屬性上動畫 –

+0

@ sa_ddam213該對話不是實際的'Window',它只是一個' UserControl',我從我的應用程序中顯示。 –

回答

1

爲了達到這個效果,我寫了自己的Panel子類,它的行爲類似於Canvas,但接受百分比偏移量而不是絕對偏移量。這使我可以從屏幕的0%到50%對「模態」UserControl進行動畫製作。

Here's the class on Github.

用法類似於Canvas

<Window> 
    <local:PercentagePanel> 
     <Button local:PercentagePanel.Left=".10" local:PercentagePanel.Bottom=".5" 
     Width="100" Height="40">Hello world!</Button> 
    </local:PercentagePanel> 
</Window> 

結果:

Example of PercentagePanel

默認情況下,PercentagePanel位置根據每個孩子的適當邊緣的兒童(類似於CSS定位)。該PercentagePanel也可以通過PositioningMode屬性定位它的子相對於每個孩子的心:

<local:PercentagePanel PositioningMode="Center"> 

下面是在上面的例子中改變PositioningMode屬性的結果:

Example of PercentagePanel with PositioningMode="Center"