2009-03-10 19 views

Trả lời

51

xmlns là một XML, không nhất thiết phải XAML, cấu trúc xác định một không gian tên để giải quyết các tên phần tử xml. Bởi vì nó được định nghĩa mà không có một trình định tính, nó định nghĩa vùng tên mặc định mà theo đó một tên phần tử XML cần được giải quyết.

Trong XAML bạn thường thấy mục nhập sau. Nó định nghĩa không gian tên mặc định về bản chất là WPF và tất cả các tên phần tử XML do đó được giải quyết như các phần tử WPF.

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 

Cũng thường thấy các không gian tên không mặc định như sau.

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 

Điều này xác định không gian tên đủ điều kiện cho các yếu tố cụ thể XAML. Nếu bạn muốn một tên phần tử hoặc thuộc tính được giải quyết trong không gian tên này, bạn nên hội đủ điều kiện nó với x. Ví dụ:

<StackPanel x:Name="foo" /> 

Có 2 độ phân giải tên trong định nghĩa này.

  1. StackPanel - Bởi vì đó là một cái tên không đủ tiêu chuẩn, nó sẽ được giải quyết trong không gian tên mặc định đó là WPF
  2. x: Name - Tên có đủ điều kiện với x và sẽ được giải quyết trong tài liệu XAML.
+0

cảm ơn rất nhiều thông tin :) – AnkitSablok

6

Được lấy từ MSDN Phần tử gốc cũng chứa các thuộc tính xmlns và xmlns: x. Các thuộc tính này chỉ ra cho một bộ xử lý XAML mà các không gian tên XML chứa các định nghĩa phần tử cho các phần tử mà đánh dấu sẽ tham chiếu. Thuộc tính xmlns chỉ rõ không gian tên XML mặc định.

Việc sử dụng xmlns này để xác định phạm vi sử dụng và ánh xạ phù hợp với đặc tả XML 1.0.

Hy vọng điều này sẽ hữu ích.

21

Và bạn sử dụng xmlns để tham chiếu đến không gian tên của riêng bạn trong XAML. Một trong những điều đầu tiên tôi làm khi tạo một dự án WPF mới là thêm một tham chiếu đến không gian tên dự án:

xmlns:local="clr-namespace:MyWpfProject" 

Bây giờ tôi có quyền truy cập vào bất kỳ lớp học tôi có thể tạo ra trong dự án của tôi (như IValueConverters và DataTemplateSelectors) bởi sử dụng tiền tố "địa phương:"

<local:BooleanToColorConverter x:Key="booleanToColorConverter" DefaultBrush="Green" HighlightBrush="Red" /> 

Tất nhiên, bạn không phải sử dụng "địa phương", bạn có thể đặt tên cho bất kỳ thứ gì bạn muốn. Và bạn có thể thêm các tham chiếu đến bất kỳ không gian tên nào khác mà bạn cần theo cùng một cách.

9

Bạn cũng có thể ánh xạ nhiều không gian tên CLR với nhau thành một không gian tên XML bằng cách thêm XmlnsDefinitionAttribute vào các hội đồng của bạn. Đây là những gì nhóm WPF đã làm, bằng cách ánh xạ rất nhiều không gian tên trong Hệ thống.Windows giống như thế này:

[XmlnsDefinitionAttribute(
    "http://schemas.microsoft.com/winfx/2006/xaml/presentation", 
    "System.Windows.Controls")] 
[XmlnsDefinitionAttribute(
    "http://schemas.microsoft.com/winfx/2006/xaml/presentation", 
    "System.Windows.Ink")] 

Cú pháp này có thể đơn giản hóa XAML của bạn, nhưng hãy cẩn thận để không có các lớp có cùng tên trong các không gian tên CLR mà bạn hợp nhất với nhau.