Làm cách nào để thêm nhận xét vào tệp Xaml trong WPF?


78

Tôi đã sử dụng cú pháp này khi tôi tìm thấy trực tuyến nhưng nó gây ra lỗi:

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
<!-- Cool comment -->
xmlns:System="clr-namespace:System;assembly=mscorlib"

'Tên không được bắt đầu bằng ký tự' <', giá trị thập lục phân 0x3C. Dòng 4, vị trí 5. ' XML không hợp lệ.

Câu trả lời:


86

Tôi giả sử các khai báo không gian tên XAML đó nằm trong thẻ mẹ của kiểm soát của bạn? Bạn không thể đặt nhận xét bên trong thẻ khác. Ngoài ra, cú pháp bạn đang sử dụng là đúng.

<UserControl xmlns="...">
    <!-- Here's a valid comment. Notice it's outside the <UserControl> tag's braces -->
    [..snip..]
</UserControl>

1
Cảm ơn vì vậy tôi có thể đặt nó ở đâu? Tôi cần đặt chúng ở những vị trí nhất định hiển thị các bổ sung của tôi vào mã.
Joan Venge

Theo ví dụ của tôi, bạn sẽ cần đặt chúng bên cạnh thẻ có nội dung bạn đã thay đổi. Bạn sẽ không thể đặt chúng theo nghĩa đen bên cạnh thuộc tính mà bạn thêm vào bên trong thẻ. Điều này có bắt buộc đối với thứ gì đó sẽ tự động phân tích cú pháp XAML và thực hiện điều gì đó dựa trên nhận xét của bạn hay chỉ để người khác xem bạn đã thay đổi những gì?
Dan J

1
Bạn đặt chúng ở bên ngoài các thẻ XML. <sometag <! - not here -> />. Nếu bạn quay lại mã của mình, bạn sẽ thấy rằng nơi bạn đặt họ nhận thông báo lỗi nằm trong một thẻ nhiều dòng.
Tormod

32

Laurent Bugnion đã tìm ra một giải pháp hay, nó có thể trông giống như sau:

<UserControl xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:comment="Tag to add comments"
             mc:Ignorable="d comment" d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <Button Width="100"
                comment:Width="example comment on Width, will be ignored......">
        </Button>
    </Grid>
</UserControl>

Đây là liên kết: http://blog.galasoft.ch/posts/2010/02/quick-tip-comment-out-properties-in-xaml/

Một người bình luận trên liên kết đã cung cấp các ký tự bổ sung cho tiền tố bỏ qua thay cho đánh dấu:

mc:Ignorable=”ØignoreØ”

3
Vì XAML là một XML chuyên môn hóa (là một chuyên môn hóa của SGML), bạn sẽ nghĩ rằng -- SGML comment --kiểu này sẽ phù hợp với các nhận xét thẻ bên trong. Nhưng không, 99,44% trình phân tích cú pháp XAML không chấp nhận nhận xét trong thẻ SGML.
Jesse Chisholm

Đây là câu trả lời hữu ích nhất!
JF

3
Tôi nghĩ câu hỏi của @Joan Venge là làm thế nào để "Xóa mã tạm thời" chứ không phải "Thêm thông tin cho người đọc của con người".
Lei Yang

28

Bạn không thể chèn nhận xét bên trong thẻ xml.

Xấu

<Window xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
<!-- Cool comment -->
xmlns:System="clr-namespace:System;assembly=mscorlib">

Tốt

<Window xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:System="clr-namespace:System;assembly=mscorlib">
<!-- Cool comment -->

8
@kenny: Nhận xét đó là OT và ranty ... Việc dựa trên bất kỳ ngôn ngữ lập trình nào khác với XML đều tệ hại, nhưng ít nhất XAML đã có ý thức tốt khi cố gắng làm cho mọi thứ trở nên khai báo nhất có thể, phù hợp với mô hình XML.
Merlyn Morgan-Graham,

3
@kenny a: xaml không phải là ngôn ngữ lập trình - nó là ngôn ngữ đánh dấu và / hoặc định dạng tuần tự hóa, tùy thuộc vào cách bạn nhìn nhận nó ... và b: hạn chế đó không phải là một của xaml - nó là một của xml.
Marc Gravell

6
Tôi hiểu hạn chế của XAML là nó dựa trên XML. Vì vậy, XML là một ngôn ngữ lập trình / đánh dấu tốc độ thứ hai. Điều đó có tốt hơn không?
kenny

1
> XML là một ngôn ngữ lập trình ... gì?
rr-

Một ngày nào đó, thế giới sẽ ngừng coi HTML / XML / et al là ngôn ngữ lập trình. Không phải hôm nay.
rw-nandemo,

15

Chỉ là một mẹo:

Trong Visual Studio để bình luận một văn bản, bạn có thể đánh dấu văn bản bạn muốn bình luận, và sau đó sử dụng tổ hợp phím Ctrl + K tiếp theo Ctrl + C . Để bỏ ghi chú, bạn có thể sử dụng tổ hợp phím Ctrl + K tiếp theo Ctrl + U .


1
Sử dụng cái này mọi lúc khi lập trình như bình thường nhưng khi tôi vào trình thiết kế XAML, tôi không nghĩ ra cái này. Hoạt động tốt.
Matthis Kohli

điều này chỉ hoạt động khi bạn nằm ngoài định nghĩa thẻ. "<x> <! - comment -> content </x>" hoạt động, "<x <! - comment ->> content </x>" thì không. Tôi đã cố gắng nhận xét một số thuộc tính trên nhiều dòng, nó đã báo lỗi.
Yılmaz Durmaz

Chỉ để rõ ràng, trong Visual Studio 201, điều này đề cập đến các lệnh Edit.CommentSelectionEdit.UncommentSelection.
AlainD

0

Bạn không thể đặt nhận xét bên trong thẻ UWP XAML. Cú pháp của bạn là đúng.

LÀM:

<xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:System="clr-namespace:System;assembly=mscorlib"/>
<!-- Cool comment -->

KHÔNG NÊN LÀM:

<xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    <!-- Cool comment -->
xmlns:System="clr-namespace:System;assembly=mscorlib"/>

-1

Đối với bất kỳ ai đang học nội dung này, nhận xét quan trọng hơn, vì vậy, dựa trên ý tưởng của Xak Tacit
(từ liên kết của User500099 ) cho các nhận xét Thuộc tính Đơn lẻ, hãy thêm phần này vào đầu khối mã XAML:

<!--Comments Allowed With Markup Compatibility (mc) In XAML!
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:ØignoreØ="http://www.galasoft.ch/ignore"
    mc:Ignorable="ØignoreØ"
    Usage in property:
ØignoreØ:AttributeToIgnore="Text Of AttributeToIgnore"-->

Sau đó, trong khối mã

<Application FooApp:Class="Foo.App"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ØignoreØ="http://www.galasoft.ch/ignore"
mc:Ignorable="ØignoreØ"
...

AttributeNotToIgnore="TextNotToIgnore"
...

...
ØignoreØ:IgnoreThisAttribute="IgnoreThatText"
...   
>
</Application>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.