2011-03-04 73 views
0

我在窗口的右下方有一個ListBox,我想在此ListBox的最左側放置一個Label如何將控件附加到WPF中的其他控件?

目前我使用的是DockPanel停靠ListBox到窗口的右下方,但我不知道如何「組」標籤和ListBox在一起,使他們呆在一起。

我是否必須使用硬編碼邊距來實現這一點,以便它們看起來都是連在一起的?

此外,我應該使用什麼控制來做到這一點? StackPanelDockPanel等?

回答

3

嵌套另一個DockPanel。將您的標籤作爲第一個孩子,並將其停靠在頂部。把你的ListBox作爲第二個孩子;它將填補剩餘的空間。

<DockPanel Name="YourExistingDockPanel"> 
    ... 
    <DockPanel> 
     <Label DockPanel.Dock="Top" Content="YourLabel"/> 
     <ListBox .../> 
    </DockPanel> 
    ... 
</DockPanel> 
+0

謝謝我這樣做但是標籤仍然停留在窗口的頂部,列表框看起來居中。但都看起來像他們停靠在屏幕的右側。 – 2011-03-04 23:48:23

+0

還是需要設置DockPanel的高度? – 2011-03-04 23:53:03

+0

Joe有正確的方法將Label和ListBox合併爲一個單元。其餘的依賴於你如何在Dock的其他部分嵌入DockPanel。在外面的DockPanel裏面,你有Dock = Right但是沒有'BottomRight' – 2011-03-04 23:56:51

2

將兩個控件放入一個單元格Grid中,並在每個屬性上設置Margin屬性以將它們完全放置在單元格內。這將允許你將Grid內的兩個控件「粘合」在一起(你可以控制它們的大小和它們在單元格內的位置,這樣粘在一起),它將起到「石斑魚」的作用。

然後,您可以使用任何您想要的方式(例如DockPanel)將網格放置在任何你喜歡的位置。裏面的兩個控件將移動,但始終保持在一起。

如果您不需要像素完美的絕對定位,如果您使用StackPanel而不是Grid,則同樣的技術也可以工作。在這種情況下,您將受到StackPanel可實現的佈局的限制。

+0

謝謝,所以網格將在DockPanel內?另外爲什麼使用絕對位置? – 2011-03-04 23:42:32

+1

對保證金進行硬編碼似乎是個不錯的主意。如果您對保證金進行硬編碼,則在字體更改或文字換行時不會更新。另外,你必須猜測右邊緣。 – 2011-03-04 23:42:54

+1

@Joan:我已經擴展了答案。 – Jon 2011-03-04 23:46:37

相關問題