2009-11-04 100 views
0

我有一個定義UserControl X的程序集。在該程序集中,X由子控件Y和Z組成。我想將Y和Z標記爲內部,以便只有X對我的程序集的用戶可用。UserControl可以在內部嗎?

我試圖在XAML和代碼隱藏類,寫作更改默認公衆更容易做到這一點:

<UserControl 
    x:Class="MyNameSpace.Y" 
    x:ClassModifier="internal" 
    ... 

當我這樣做,一切編譯罰款,但隨後在運行時當初始化頂級用戶控件X時,我在X.xaml中得到了可怕的錯誤AG_E_PARSER_BAD_TYPE,我說

<my:X Name="TheX"></my:X> 

當我編譯和編輯時,我也有時(但並非總是)看到這行被標記爲XAML編輯器中的錯誤,並帶有關於X未知的消息。

將輔助功能更改回「公開」立即解決了問題。

因此,看起來我的內部子控件不能通過將它們標記爲內部來從外部隱藏,因爲這也將它們從XAML機制的某個部分隱藏起來。它是否正確?有什麼辦法可以解決這個問題並隱藏我實際上不想分享的作品嗎?

回答

3

是的,你需要你的控件可以訪問它們才能使用。如果你不希望它們是可共享的,你可以做的一件事是檢查父類型以確保它是你編碼的父類型。然後,如果有人將你的控件粘貼到他們的應用程序中,而沒有將它們放在主機控件中,則可以拋出異常。

+0

+1。好建議btw .. – 2009-11-05 08:00:13

相關問題