2010-07-21 32 views
11

Tôi khá mới trên C#, WPF và XAML, vì vậy tôi có thể không sử dụng đúng thuật ngữ để đặt câu hỏi đúng =) Tôi đang cố gắng thêm không gian tên của riêng mình vào xaml của tôi nộp để sử dụng lớp riêng tôi dễ dàng -Tôi đoán lý do là this- tôi đã viết đoạn mã sau trong thẻ cửa sổ cho việc này:thêm không gian tên tùy chỉnh vào xaml

xmlns:myns="clr-namespace:LibNameSpace" 

đâu tag cửa sổ của tôi cũng bắt đầu với định nghĩa sau đây:

< Window x:Class="LibNameSpace.MainWindow" 

Tôi muốn sử dụng LibNameSpace:Class1 lớp, và tôi đã hy vọng viết myns:Class1 cho việc này. Tuy nhiên, lệnh đó gây ra lỗi này:

Undefined CLR namespace. The 'clr-namespace' URI refers to a namespace 'LibNameSpace' that is not included in the assembly.

Làm cách nào để khắc phục sự cố này?

+0

Đảm bảo thêm tham chiếu thư viện vào dự án ứng dụng – 0x4f3759df

Trả lời

26

Tên LibNameSpace nghe giống như thư viện trong một hội đồng khác. Nếu đây là trường hợp, bạn phải thêm tên của assembly:

xmlns:myns="clr-namespace:LibNameSpace;assembly=MyLibAssembly 

Cập nhật:

Tên của hội đồng có thể được tìm thấy trong dự án thám hiểm trong propeties màn hình của dự án (của việc lắp ráp thư viện). Nói chung cũng là tên tập tin của dll mà không có dll -suffix đại diện cho tên lắp ráp.

+0

, trong chứng thư tôi thấy giải pháp như vậy từ đâu đó nhưng tôi không biết từ đâu để tìm hiểu tên của assembly ... =) – cemregoksu

+0

Bất kỳ đề xuất nào khác/ý tưởng/giúp đỡ ?? – cemregoksu

+0

Tôi sợ nó không hoạt động khi tôi viết xmlns: myns = "clr-namespace: LibNameSpace; assembly = LibNameSpace" – cemregoksu

10

Bởi vì đối với tôi nó không thực sự rõ ràng những gì bạn muốn làm, ở đây khác thử:

Nếu MyLibAssembly là không gian tên chính của ứng dụng của bạn và có trong bạn có một cửa sổ có tên MainWindow và một lớp có tên Class1 mà bạn muốn nhanh chóng trong MainWindow đẳng cấp của bạn:

  • Hãy chắc chắn rằng, rằng trong Class1 là không có lỗi , dự án phải biên dịch mà không có lỗi. Trước hết, hãy xóa khai báo không gian tên khỏi xaml và biên dịch dự án của bạn cho đến khi bạn không có lỗi biên dịch.
  • Hãy chắc chắn rằng Class1 là công khai và có một constructor paramterless
  • Hãy chắc chắn rằng trong các mã sau MainWindow của bạn cũng là trong -namcespace MyLibAssembly.
  • Thêm sau đó khai báo không gian tên xmlns:local="clr-namespace:LibNameSpace vào xaml của bạn. local thường là dùng để khai báo không gian tên tương tự như yếu tố hiện tại của bạn, trong trường hợp của bạn cửa sổ, là trong.
  • Chèn của bạn Class1 với <local:Class1/> -tag trong XAML. Nếu Class1 không xuất phát từ FrameworkElement hoặc kiểm soát mức cao hơn, bạn phải thêm nó vào phần tài nguyên của cửa sổ của bạn. Nếu điều này là đúng, hãy cho nó một chìa khóa. <local:Class1 x:Key="KeyToYourClass"/>

Có thể là không đồng bộ.Nhấp vào trình khám phá giải pháp trên root-node Giải pháp làm sạch và sau đó Giải pháp xây dựng lại. Có lẽ điều đó sẽ giúp ích.

Tôi hy vọng điều này sẽ hữu ích. Nếu không, hãy thử định dạng lại câu hỏi của bạn (sử dụng biểu tượng mã để làm cho câu hỏi dễ đọc hơn và cố gắng nói lại để làm rõ hơn ý muốn của bạn).

+2

+1 để đề xuất xây dựng lại. Tôi đã nhận được thực sự thất vọng với các squiggly dai dẳng. – Grault

5

Sử dụng Intellisense. Trong trường hợp của tôi một không gian quan trọng. thay vì

xmlns:local="clr-namespace:DataAccess;assembly=DataAccess" 

tôi tay gõ

xmlns:local="clr-namespace:DataAccess; assembly=DataAccess" 

Thông báo không gian sau khi ';'. Điều này tạo nên sự khác biệt. Vì vậy, sử dụng Visual Studio Intellisense và nó sẽ làm cho bạn đánh dấu đúng xaml.

+0

Cố gắng rất nhiều thứ khác nhau và điều này cuối cùng đã làm điều đó! Quá dễ – John

4

Tôi tìm thấy câu trả lời này trong khi tôi đang vật lộn với các vấn đề trong Windows 8. Tôi đã cố gắng sử dụng một điều khiển người dùng và tôi đã có một số lỗi. Những người cuối cùng nơi:

Error 9 Cannot add 'ScrollControl' into the collection property 'Children', type must be 'UIElement'

và:

Error 10 Unknown type 'ScrollControl' in XML namespace 'clr-namespace:EventTests.Controls;assembly=EventTests, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'

ScrollControl là kiểm soát của tôi sử dụng.

tôi đã kết thúc thay thế này:

xmlns:Controls="clr-namespace:EventTests.Controls" 

Đối với điều này:

xmlns:Controls="using:EventTests.Controls" 

Tôi hy vọng điều này giúp tiết kiệm thời gian tôi bỏ ra với vấn đề này.

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