2012-05-21 42 views
1

我有一個自定義控件MyDataGrid的Silverlight應用程序,它是DataGrid的一些額外功能。Silverlight:同一項目中自定義控件的樣式

這是使用它的項目的一部分。它也需要一個自定義樣式。我可以將樣式添加到我的樣式資源字典中,並設置其適用的TargetType="sdk:DataGrid"

但是,我的風格依賴於MyDataGrid特有的MyProperty屬性,所以編輯器中會出現警告。更重要的是,樣式不能在設計器中預覽。

但是,它們在代碼運行時工作。

我的問題是:有沒有辦法將本地控件拉到資源字典中,而不是創建單獨的項目,將其編譯爲.dll並拉入該程序集?

謝謝!

+0

你爲MyDataGrid類定義了一個generic.xaml嗎? –

+0

不是?你有沒有關於如何去做這項工作的信息?我可以找到它的一些信息,但不是很多... – nosirrahcd

回答

1

這聽起來像你做了一個自定義控件,但是你還沒有爲它定義一個默認樣式。請嘗試以下操作:

  1. 在您的項目中,在根級別添加一個名爲Themes的文件夾。
  2. 在Themes文件夾中,添加一個名爲generic.xaml的ResourceDictionary。
  3. 將所有MyDataGrid樣式添加到generic.xaml。
  4. 確保其中一種樣式是隱式樣式(使用BasedOn是一個很好的解決方案)。
  5. 在爲MyDataGrid默認的構造函數中添加一行DefaultStyleKey = typeof(MyDataGrid);

如果您要訪問的風格從代碼(這是在XAML中定義)的一部分,你應該名XAML項目作爲「PART_something」。設計工具瞭解PART_ *語法,這是對庫消費者的一個指示,如果您重新設定控件,則必須定義以PART_爲前綴的所需部分。

這裏是關於如何define a custom control的基礎知識。

+0

偉大的解決方案!這麼簡單...謝謝你的幫助! – nosirrahcd

相關問題