我正在創建一個更適合MVVM的Silverlight對話框類。 ChildWindow
類有一些尷尬,這使得從視圖模型難以管理。如何允許Silverlight彈出窗口調整其內容大小,但阻止其增長?
這意味着我需要聲明我自己的用戶界面。我擁有所有傳統元素,包括一個Popup
控件和一個覆蓋率爲50%的不透明度。開/關行爲也在起作用。
我遇到的問題是我的控件模板不能阻止對話框體的增長,以響應用戶輸入到TextBox
。當字符數量增長超過默認大小時,整個對話框主體水平延伸。顯然這不是正常的行爲。
我想要完成的是對話框主體根據內容適當調整自己的大小,但不能響應需要更多或更少空間的子控件來擴展或縮小。這是如何控制行爲,但我已經檢查了its template,我無法確定這是如何工作的。
我想我看到了擴展行爲,因爲我的模板基於Grid
s,它允許子控件的大小與它們請求的一樣多。我試過StackPanel
,ScrollViewer
和其他佈局沒有成功的幾個排列組合。有沒有人對ChildWindow
如何實現其靜態,內容大小的佈局或其他建議有所瞭解?
這裏的模板我迄今,精簡到最基本的要素:
<Popup>
<Grid x:Name="overlay">
<Border>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid Grid.Row="0">
...Title...
</Grid>
<Grid Grid.Row="1">
<ContentControl Content="{TemplateBinding DialogBody}" />
</Grid>
</Grid>
</Border>
</Grid>
</Popup>
當DialogBody
包含TextBox
或其他任何這改變版面大小,如隱藏的控制,整個內容Popup
增長。我不想訴諸靜態寬度和高度,因爲我想讓對話框自動調整大小到對話框主體,但最初只有。
這很有趣。我正在使用可從行爲中觸發的可浮動子窗口。我還有幾個實現有用戶輸入,我想知道我是否會遇到同樣的問題。自從可浮動子窗口繼承子窗口後,我將發佈我的結果。 – 2011-04-03 06:49:49