2009-06-03 37 views
9

Ok, vì vậy tôi có một câu hỏi chung về WPF. Tôi đã messed một chút với ASP.NET MVC và trong đánh dấu nó có intelliSense trên đối tượng viewmodel của bạn, do đó bạn không mistype nó (tôi thích nó).WPF Databinding intellisense

Nhập WPF, tôi thích nó, tôi đang sử dụng cách tiếp cận MVVM và một điều khó chịu mà tôi phải làm là đảm bảo rằng tôi ràng buộc chính xác với viewmodel của tôi. Vì vậy, tôi gõ một cái gì đó lên trong xaml của tôi, sau đó tôi hoặc 1) nếu tôi lười biếng chỉ cần chạy các ứng dụng và bấm vào khoảng 2) Nếu tôi không lười biếng a) Nhìn vào DataContext hiện tại của kiểm soát tôi làm việc với. b) Chuyển đến lớp ViewModel đó xem xét các thuộc tính c) Tìm thuộc tính của tôi rồi nhấp lại vào chế độ xem của tôi và đảm bảo rằng tôi viết đúng chính tả.

Tôi tin rằng bạn có thể xem đầu ra dấu vết của mình cho các ràng buộc không đúng lúc chạy, nhưng có điều gì đó trong đường chân trời để cho phép intellisense trong xaml. Chế độ xem cần biết về ViewModel của tôi, vậy tại sao không hiển thị trong xaml.

Tôi nghĩ rằng nó sẽ là tốt đẹp cho IDE để làm điều đó cho tôi, có nghĩa là, khi tôi gõ "{Binding" nó nên đi lên cây trực quan tìm đầu tiên không null DataContext và hiển thị các thuộc tính, cho phép tôi chọn một và ở đó bạn có nó.

Tôi có thiếu gì đó không? Có bất kỳ lựa chọn thay thế nào không. Có cái nhìn sâu sắc nào không?

CHỈNH SỬA:

Về các nhận xét bên dưới có cách thiết lập datacontext tại thời điểm thiết kế, ví dụ:

<Window.Resources> 
    <DesignTimeData:DesignTimeCustomers x:Key="designTimeCustomersDS" /> 
</Window.Resources> 

đó là một đoạn từ blog này: http://karlshifflett.wordpress.com/2008/10/11/viewing-design-time-data-in-visual-studio-2008-cider-designer-in-wpf-and-silverlight-projects/

Tất cả nó là tài liệu tham khảo một lớp trong XAML.

Vì vậy, với điều đó tại chỗ không thể nhà thiết kế sau đó sử dụng sự phản chiếu trên datacontext để cung cấp cho bạn tất cả các thuộc tính cho lớp đó?

+0

Trong một số cách, WPF thực sự tỏa sáng - trong một số cách khác, đó là POS. Đây là một trong những người khác. –

+0

Đó là lý do tại sao tôi đang sử dụng các bài kiểm tra để xác thực tất cả các ràng buộc xem (tốt, gần như tất cả) đối với các Chế độ xem tương ứng. – Snowbear

+0

Như đã đề xuất dưới đây, sử dụng Resharper (với d: DataContext set), nó sẽ giúp bạn tiết kiệm rất nhiều thời gian. bạn có thể trực tiếp tạo ra các thuộc tính viewmodel từ xaml với alt + enter – Boklucius

Trả lời

4

Vì vậy, với điều đó ở vị trí có thể không phải là nhà thiết kế sau đó sử dụng phản ánh trên các DataContext để cung cấp cho bạn tất cả các thuộc tính cho lớp đó?

Resharper 6 có tính năng này và có thể hiển thị cho bạn các thành viên của d: DataContext trong intellisense, nếu bạn đặt d: DataContext trên Chế độ xem.

4

Visual Studio 2010 sẽ hỗ trợ intellisense trên Bindings. Tuy nhiên, điều này được giới hạn trong các thuộc tính của đối tượng Binding. Ví dụ sau khi gõ "{Binding" vào trình soạn thảo XAML, sau đó tôi nhận được intellisense về các thuộc tính còn lại (Path, ElementName, vv).

Tôi không nghĩ loại nội dung liên quan đến ngữ cảnh dữ liệu mà bạn đã chỉ định có thể xảy ra khi bối cảnh dữ liệu được đặt ở thời gian chạy. Tôi đã thử nghiệm trong VS 2010 bằng cách thiết lập bối cảnh dữ liệu trực tiếp trong constructor nhưng không có bất kỳ may mắn.

+0

Đây là liên kết cho video MIX09 mà đi qua một số điều này, nhanh chóng chuyển tiếp tới khoảng 20 phút để truy cập vào Bộ chọn tài nguyên và intellisence: http://videos.visitmix.com/MIX09/T73M – rmoore

+0

Cho rằng DataContext được thiết lập một thời gian chạy, tôi nghi ngờ rằng nó có thể thực hiện intellisense cho bindings, thật không may. Chỉ vì loại biến được đặt làm DataContext là Foo, nó thực sự có thể là thuộc tính của Bar và Bar là trò chơi công bằng để sử dụng cho các ràng buộc. Làm thế nào có thể Visual Studio biết điều này là trường hợp? – Andy

+0

Tôi đã thực hiện một số cập nhật ở trên về cơ bản chỉ ra rằng chúng tôi có thể gán datacontext trong thời gian thiết kế. Nhưng từ ý kiến ​​của bạn, có vẻ như đây không phải là trên đường chân trời. – Jose

4

VS 2013:

IntelliSense với giải quyết DataContext enter image description here

IntelliSense với des thời gian chờ DataContext enter image description here

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