2011-03-02 61 views
0

我想製作一個自定義的面板(除其他外)插入所有孩子之間的間距。從面板繼承似乎非常複雜,也許沒有必要。我想要的是接近StackPanel,所以我想我可以從StackPanel繼承並修改ArrangeOverride和MeasureOverride以獲得我想要的。 我從Reflector中獲得了這些實現,但立即注意到一個屬性根本不能從繼承類中訪問,即IsScrolling(和_scrollData字段)。我的問題是,如果我可以跳過這一點,或者如果有其他方式來實現相同的行爲?我不知道我需要滾動這個自定義面板,但我可能會做一些日子,我不想自己畫一個角落...WPF:ArrangeOverride在自定義的StackPanel

回答

0

如果你想要的只是容器內的所有元素會自動包含保證金定義,你是很多只是創建一個實現該功能的自定義行爲更好。

要創建自定義行爲,只需執行Behavior<Panel>。這很明顯,但如果你不知道如何問。

+0

我想在不使用保證金的情況下在孩子之間添加空間(他們也應該可以自己使用其他保證金),並且我希望能夠根據某些規則指定填充資產以停靠/填充孩子我想添加一個分組屬性來分隔具有更大空間的兒童組。我可以使用行爲來完成所有這些嗎?這似乎是一個自定義面板更合適? – 2011-03-02 10:36:28

+0

在這種情況下,是的,自定義面板是要走的路。至於你的問題,那麼 - 我認爲這是IScrollInfo基礎結構的一部分,用於處理ScrollViewer集成。如果您在滾動時不需要自定義行爲,我認爲您可以忽略它。 – 2011-03-02 10:48:57

+0

我會第二次Elad,你真的需要一個字符串原因去定製面板路線。依靠現有的功能總是很好的。 對於初學者,我建議Dock面板作爲主要UI元素更合適,因爲使用了Fill。 如果您不想混淆元素邊距,可以通過包含'spacer'元素來完成邊距。 分組可以通過使用堆疊面板作爲孩子來完成。 你可以給我們發一張它應該是什麼樣子的圖像嗎? – 2011-03-02 10:51:51