2011-10-27 26 views
10

Tôi có một ứng dụng WPF khá lớn với rất nhiều tệp XAML. Mỗi tệp XAML đơn lẻ có từ 5 đến 10 clr đến ánh xạ vùng tên xml xmlns:abc="clr-namespace:Abcdef".
Nó trông khủng khiếp và là một nỗi đau để viết trong mỗi và mọi tập tin.WPF - toàn cầu thêm khai báo không gian tên xaml

Có cách nào để xác định những người trên toàn cầu không?

Trả lời

13

Không có cách nào để xác định chúng trên toàn cầu trên các tệp. Đây là một hạn chế của XML; XAML là một tập con của nó.

Tuy nhiên bạn có thể làm sạch chúng lên một chút bằng XmlnsDefinition

Xem bài viết này: http://zachbonham.blogspot.com/2010/04/organize-xaml-namespace-declarations.html

Nếu bạn bắt đầu với XAML này:

<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> 

Và thêm những XmlnsDefinition thuộc tính:

[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... 

Thay vào đó, bạn có thể kết thúc với XAML này:

<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

Tôi không có may mắn khi làm việc này khi tham chiếu không gian tên được định nghĩa trong một hội đồng khác. – Maslow

+0

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

Các vấn đề liên quan