2011-10-27 16 views
10

私は非常に巨大なWPFアプリケーションを多くのXAMLファイルとともに使用しています。すべてのXAMLファイルには、xml名前空間マッピングxmlns:abc="clr-namespace:Abcdef"に5〜10個のclrがあります。
それはひどいように見え、各ファイルに書き込むのは苦痛です。WPF - グローバルにxaml名前空間宣言を追加します。

これらをグローバルに定義する方法はありますか?

答えて

13

ファイル間でグローバルに定義する方法はありません。これはXMLの制限です。 XAMLはそのサブセットです。 http://zachbonham.blogspot.com/2010/04/organize-xaml-namespace-declarations.html

あなたはこのXAMLを開始した場合::

<UserControl 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:treeView="clr-namespace:MaryKay.SamPortal.Common.UI.TreeView.Views;assembly=MaryKay.SamPortal.Common.UI" 
    xmlns:infoBar="clr-namespace:MaryKay.SamPortal.Common.UI.InfoBar.Views;assembly=MaryKay.SamPortal.Common.UI"> 
    <infoBar:InformationBar DataContext="{Binding InfoBar}"/> 
</UserControl> 

そして、これらのXmlnsDefinitionの属性を追加しました:

をあなたはこの記事を参照してください XmlnsDefinition

を使用してビットをそれらをクリーンアップすることができますしかし

[assembly: XmlnsDefinition("urn:marykay-samportal-common-ui", "MaryKay.SamPortal.Common.UI.InfoBar.Views")] 
[assembly: XmlnsDefinition("urn:marykay-samportal-common-ui", "MaryKay.SamPortal.Common.UI.RoleGroupPicker.Views")] 
[assembly: XmlnsDefinition("urn:marykay-samportal-common-ui", "MaryKay.SamPortal.Common.UI.BetterPopup")] 
[assembly: XmlnsDefinition("urn:marykay-samportal-common-ui", "MaryKay.SamPortal.Common.UI.TextEditor")] 
[assembly: XmlnsDefinition("urn:marykay-samportal-common-ui", "MaryKay.SamPortal.Common.UI.Converters")] 
[assembly: XmlnsDefinition("urn:marykay-samportal-common-ui", "MaryKay.SamPortal.Common.UI.Documents")] 
[assembly: XmlnsDefinition("urn:marykay-samportal-common-ui", "MaryKay.SamPortal.Common.UI.SplashScreen")] 
[assembly: XmlnsDefinition("urn:marykay-samportal-common-ui", "MaryKay.SamPortal.Common.UI.TemplateSelector")] 
[assembly: XmlnsDefinition("urn:marykay-samportal-common-ui", "MaryKay.SamPortal.Common.UI.ModalDialog")] 
[assembly: XmlnsDefinition("urn:marykay-samportal-common-ui", "MaryKay.SamPortal.Common.UI.ConsultantSearch.Views")] 
// etc... 

このXAMLで終わる可能性があります。

<UserControl 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:commonUI="urn:marykay-samportal-common-ui"> 
    <commonUI:InformationBar DataContext="{Binding InfoBar}"/> 
</UserControl> 
+0

別のアセンブリで定義されている名前空間を参照するときにこれを動作させることは、私にはうんざりしていません。 – Maslow

+0

@Maslow http://stackoverflow.com/questions/4225072/refering-to-another-project-in-xaml-undefined-clr-namespace –