2012-06-28 49 views
0

所以我有一個應用程序分爲兩部分 - 左邊是一個自定義菜單,右邊是一個網格,它包含所有「內容」(不同的屏幕)。我應該使用WPF用戶控件嗎?或者只是一個網格?

它看起來是這樣的:

enter image description here

而且,當不同的按鈕被擊中,在左邊的菜單,將填補了不同的按鈕(例如,如果你打的審查按鈕,菜單將成爲沿東西線):

Start Date 
End Date 

Employee 
Project 
... 

我敢肯定,我想每個屏幕(走右側)是他們自己的用戶控件。

但我的問題是這樣的:應該每個菜單的用戶控件?這使它們使用起來有點困難。然後我必須擔心有getter/setter,所以主窗口可以聽菜單的按鈕等

另一種選擇是隻是以編程方式在mainWindow中添加按鈕,這樣我可以只添加偵聽器權限在mainWindow.cs中(併入網格)

哪種方法更好?還是有另一種方法是有利的?

+0

WPF是爲網格和畫布的主要使用而設計的。 –

回答

1

整個窗口可以很容易地做成Grid

左側可以按住您的按鈕,只需按住StackPanel或其他佈局控件即可。您可以使用ContentPresenter來保存右側的內容。當您觸發您的按鈕時,只需更改綁定的內容,它就會使用適當的用戶控件進行更新。

+0

聽起來很有趣。所以你說我不應該爲每個屏幕有一個單獨的文件?但是這並不意味着我的MainWindow.cs/xaml文件將會是huuuuge嗎? – Toadums

+0

@Toadums否 - 您可以爲每個「屏幕」分別設置一個UserControl - ContentPresenter可以在運行時交換內容。 –

+0

哦,好的。我知道了!!因此,只需在c#代碼中定義按鈕,從堆棧面板添加/刪除它們就可以了? – Toadums

0

我想你可能會像Reed所說的那樣使用網格。但是如果您需要在其他地方重複使用,我認爲您應該使用分開的UserControl。

0

也許我誤解了你,但是我會用TabControlTabStripPlacement="Left"

如果左側需要額外的空間來顯示其他內容,則可以覆蓋默認的TabControl的ControlTemplate,並向ControlTemplate內的TabPanel添加一堆邊距空間。或者,您可以讓TabItem的標題在選擇時與其未選中時顯示爲不同。

相關問題