2013-02-12 26 views
5

Tôi đang làm việc trên dự án WPF VS 2012 Express (C# code-behind) và tôi nhận được lỗi "Vòng lặp được phát hiện trong biểu thức thuộc tính". Bây giờ trước khi tôi tiếp tục, tôi biết tại sao tôi nhận được nó - Tôi chỉ không chắc chắn phải làm gì về nó hoặc thậm chí nó cần phải được xử lý bởi vì mặc dù nó xuất hiện trong danh sách lỗi và được gạch dưới màu xanh, chương trình biên dịch và chạy tốt. Tôi đã Googled này tất nhiên và kết quả đã thay đổi. Câu hỏi của tôi là một parter hai nhưng trước tiên, đây là tóm tắt:Một vòng lặp đã được phát hiện trong biểu thức thuộc tính

Các mã vi phạm:

<Style TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}"> 
<!-- setter properties --> 
</Style> 

Như bạn có thể thấy, đó là một phong cách cho Button đó đề cập đến nút đó là những gì gây ra vấn đề này. Cách giải quyết đầu tiên tôi đọc có liên quan đến việc tách mã như sau:

<Style x:Key="ButtonStyleToApply" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}"> 
    <!-- setter properties --> 
</Style> 
<!-- and in another style dictionary, --> 
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource ButtonStyleToApply}"/> 

... và sau đó hai bộ kiểu này đi vào các từ điển khác nhau. Rõ ràng, điều này đã không làm bất kỳ tốt hoặc - VS vẫn ngửi ra những gì tôi đã làm nhưng nó vẫn biên dịch và chạy tốt. Bây giờ, đây là một cách giải quyết khác:

"Có một số thay đổi về kiến ​​trúc trong XAML Designer trong Visual Studio đã làm giảm kịch bản này. Chúng tôi sẽ làm việc để cải thiện trải nghiệm này trong tương lai nhưng ngay bây giờ bạn có thể giải quyết vấn đề này không xác định tài nguyên trong đối tượng Application (App.xaml) mà thay vào đó xác định chúng trong tài liệu cục bộ (MainPage.xaml) "

Điều này đã được đăng trong truy vấn hỗ trợ kỹ thuật Here. (Connect.Microsoft.Com)

Nhưng tôi tin tưởng vào kinh nghiệm từ mọi người. Những gì các đồng nghiệp của tôi có thể cho tôi biết? Câu hỏi của tôi là một hai parter. 1. Tôi thậm chí có cần phải bận tâm với cách giải quyết nếu chương trình được biên dịch không? Và 2. Nếu tôi tốt để đi, có cách nào để nói với VS chỉ cần bỏ qua nó? Tôi biết bỏ qua nó trên một phần của tôi hoặc VS của có lẽ được coi là "thực hành xấu" nhưng ngoài đó ...?

+0

chỉ FYI: vui lòng không bao gồm tên thẻ trong tên sách của bạn; phần mềm sẽ chăm sóc điều này cho bạn. Xem: http://meta.stackexchange.com/questions/130242/using-tags-in-question-tiêu đề –

+0

hiểu, cảm ơn bạn :) –

Trả lời

12

Không có gì sai với cú pháp bạn đang sử dụng; đó là hợp pháp để xác định một phong cách tiềm ẩn được dựa trên một phong cách tiềm ẩn hiện có. Mẫu mã bạn đã cung cấp cho tôi trong VS 2010 không có khiếu nại, nhưng tạo lỗi trong câu hỏi trong VS2012.

Vì nó cũng biên dịch và chạy tốt trong cả hai phiên bản, tôi nghi ngờ vấn đề là với sự hỗ trợ thiết kế XAML VS 2012. Làm thế nào lớn của một thỏa thuận này là dành cho bạn phụ thuộc vào bao nhiêu bạn dựa vào dựng hình thiết kế cho quan điểm WPF của bạn. (Ví dụ, tôi thường ẩn chế độ xem được hiển thị và hoạt động độc quyền trong chế độ xem XAML.) Nếu bạn sử dụng tính năng đó, bạn có thể nhận thấy rằng không phải tất cả các thuộc tính của bạn đều được đặt đúng lúc thiết kế. Tất nhiên, vì những người định cư thường không có nhiều hiệu ứng cho đến thời gian chạy, bạn có thể không bao giờ nhận thấy sự khác biệt.

Và, khi câu hỏi của bạn chỉ ra chính xác, ngay cả Microsoft đã xác định đây là hồi quy trong VS2012, điều này gợi ý rằng họ không mong đợi lỗi xảy ra và có khả năng sẽ sửa lỗi thiết kế tại một số điểm trong tương lai .

+0

Đó chắc chắn là những gì tôi muốn nghe. Cảm ơn bạn đã giúp đỡ. –

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