2009-08-23 61 views
1

在WPF中創建導航應用程序時,如何爲窗口創建自定義樣式和佈局?這可能嗎?例如,假設在窗口一側添加一個面板,並鏈接到應用程序中的所有頁面。 當我嘗試將控件/內容添加到NavigationWindow時,我收到以下消息:WPF NavigationWindow中的OverrideDefaultStyle?

「類型'NavigationWindow'不支持直接內容。」

感謝

回答

0

要自定義主窗口的導航風格的應用程序,只是讓自己正常的WPF應用程序,和普通的窗口,和丟幀控制到該窗口。將框架源設置爲您希望應用程序啓動的頁面,它的行爲將與您的標準導航應用程序類似,但您可以使用其他控件自定義窗口等。

+0

感謝。當我創建一個導航窗口時,有後退和歷史控制。我是否仍然可以使用所描述的解決方案獲得此功能? – 2009-08-23 09:49:46

+0

當然 - Frame控件默認具有它們。您需要將ShowsNavigationUI屬性設置爲false,以使它們*不*顯示。 – 2009-08-23 09:54:39

1

我不是當然,我明白從一個普通的窗口開始,添加一個框架,然後啓用ShowsNavigationUI屬性的建議。這實質上就是NavigationWindow是什麼;你不妨從那裏開始。顯示在框架中的向前/向後按鈕將作爲內容窗口的一部分出現。是的,它會起作用,但它也會顯得很奇怪,因爲大多數用戶都希望看到框架左上角的導航控件。

有三個選項可用。第一個是重新使用導航窗口。您可以在線找到NavigationWindow的原始WPF模板。如果您遇到問題,我可以爲您找到鏈接。您可以使用這些作爲起點,並將您自己的控件添加到框架。創建自己的NavigationWindow模板最重要的部分是將ContentPresenter作爲名稱「PART_WinNavCP」的一部分。

第二個選項是使用Expression Blend爲您提取NavigationWindow的元素。但是,再次,您需要在完成逆向工程後組裝所有零件。

第三個選項是我放在一起的那個。它是由我創建的,因爲我遇到了與運行(運行)相同的限制。如果你想專注於創建一個真正的航海風格的界面,但不嘗試reskin整個控制,請看看:

http://www.teraque.com/products/explorer-chrome-suite/

我提供了一個免費的演示。拿出來旋轉。即使你不想購買該產品,如果這是你正在努力完成的任務,我可以給你指點。

真誠,

唐納德·羅伊·艾雷

[email protected]