2013-04-24 201 views
0

我試圖實現一個自定義控件,它將根據3種不同的控件狀態顯示不同的內容。我已經通過添加一個狀態和3個不同的內容屬性來實現我的控制。具有多個ContentPresenter的自定義控件

我現在擁有的就是這樣的東西。

  1. 用戶設置CurrentState屬性的,"Default""CurrentStep""Completed"之一。
  2. 控制器通過VisualStateManager切換到不同的視覺狀態。
  3. 控制3個不同ContentPresenters上的默認模板集Visibility屬性以顯示單個內容。

這一切都沒有問題。我正在努力做的是支持設計時間。我可以做的唯一事情是將ContentProperty屬性設置爲其中一個內容屬性,以便Blend將該屬性顯示爲控件樹中的一個子項。但是,這使得只有一個內容屬性可以在設計時編輯。

我還能做些什麼來爲我的控件添加設計時間支持?

回答

1

我不會用多個contentPresenter創建一個自定義控件。

爲了實現你想要做的事情,大多數時候,你使用命名部分創建一個控件(默認的winrt控件模板使用這個「命名的部分」機制)。 當您的自定義控件狀態改變時,您只需顯示/隱藏一個或多個指定部分。

這樣,您可以提供一個默認的控制模板,包含您需要的所有命名部件,並自定義控件,覆蓋默認模板並定義您自己的部件。依賴於狀態的顯示/隱藏邏輯將保持不變,但目標控制選擇取決於編寫模板的人。

+0

感謝您的回答。儘管我無法實現將TemplatedPart屬性與我的控件配合使用。混合仍然沒有迴應。 – 2013-04-30 06:43:36

+0

TemplatePart屬性有什麼問題?也許如果你發佈了一些代碼,我將能夠幫助你。 – Miiite 2013-05-06 09:10:43

相關問題