2010-07-21 81 views
1

我對WPF相當陌生,我有這種情況:在運行時替換控件的最佳方式是什麼?

我有一個應用程序包含一個區域,不同的時間(不同的應用程序狀態)應顯示不同的控件集。

我想知道WPF中的方法是什麼?

在winforms中,我會使控件在運行時可見/不可見。如果控件太多,我會將它們分組在Panels/UserControls上並顯示/隱藏這些控件。

我的直覺告訴我在WPF中有更好的方法。

回答

2

在WPF中有很多選項可以做到這一點。除了通過設置可視性來隱藏和顯示單個或多組控件外,您還可以使用不同的數據模板來包含每個狀態的控件集並在這些控件之間切換。您只需要一個可以在其上設置ContentTemplate的ContentControl。然後可以使用觸發器,綁定,來自代碼或通過使用ContentTemplateSelector來選擇模板,然後將ContentTemplate值切換到不同的DataTemplates。

+0

如果我有不同的模型和背景變化背後的不同邏輯,數據類型仍然有用嗎? – Kugel 2010-07-22 15:42:55

+0

當然。關閉用於綁定源的類可以使它更有用。例如,如果您有兩個不同的ViewModel類來驅動兩個UI狀態,則可以使用DataTypes和no x:Keys將兩個DataTemplates定義爲Resources。然後,您可以將任一ViewModel對象分配給ContentControl的Content屬性,並且它將自動選取合適的模板。 – 2010-07-22 21:59:26

1

Visibility屬性完美地描述了您的舊winforms習慣。

你也想看看Visual States。這將允許您隱藏/顯示多個控件,甚至更改其他屬性(即啓用狀態,字體顏色)。