2011-10-28 23 views
4

我正在使用WPF,並且我遇到了佈局問題。我有一個停靠面板(非WPF,我只是託管我的控制內部)。當用戶希望將此面板停靠在屏幕的左側或右側時,我需要以一種方式佈局我的控件。但是,當用戶希望將此面板停靠在頂部或底部時,我需要以另一種方式佈局我的控件。取決於某些條件的WPF控件的動態佈局

我的問題是什麼是實現動態佈局的WPF控件,這取決於一些條件的最佳途徑?

據我所知,我可以使用網格並動態改變我的控件在網格中的位置。但我對這個解決方案並不滿意。我正在尋找一種無代碼干預的解決方案,僅適用於xaml。並且如果這是不可能的,至少在代碼中涉及最少的干預。

在此先感謝。

回答

5

您可以使用AvalonDock來獲得非常像Visual Studio's的對接系統。
這會讓您的用戶完全控制他們所需的佈局,並且實現起來並不難。

但是,如果你真的想要一個快速的方法來做到這一點,我建議將DockPanel.Dock屬性綁定到ViewModel值,該值在用戶輸入時會發生變化(如果需要,還會附帶IValueConverter)。

+0

我同意這種看法的轉變。 'AvalonDock'可以給你你想要的。還有Infragistics,T​​elerik控件。 –

+0

謝謝你的回答。我已經使用原生的Visual Studio停靠面板,我正在開發一個Visual Studio包:) DockPanel.Dock的綁定是一個很好且簡單的解決方案,非常感謝! – pingvinius

3

爲此,DataTemplate功能是。

這個想法是提供多個DataTemplates,然後根據標準使用您自定義的DataTemplateSelector rturn權限DataTemplate。

+0

謝謝你的回答。這是控制佈局難以區分的絕佳解決方案!非常感謝! – pingvinius

+1

對不起stackoverflow.com同時不支持兩個答案,但您的答案也是很好的解決方案! :) – pingvinius

1

用故事板和更改的控制

+0

謝謝你的答案。我認爲,這是難以維護的解決方案,需要比其他解決方案更多的時間來實施。 – pingvinius