2017-03-27 13 views
13

Tôi sử dụng rộng rãi các tương tác Expression 'CallMethodAction để xử lý các sự kiện từ XAML theo cách thân thiện với MVVM.Visual Studio 2017 - Điều gì đã xảy ra với tương tác Expression?

Tôi vừa tạo một dự án WPF mới trong VS2017 và bây giờ tôi thấy không gian tên Expression cũ đã biến mất. Tôi tìm thấy this page on MSDN đó là hành động mà tôi đang tìm kiếm nhưng sau khi tham khảo việc lắp ráp và thêm không gian tên nó không chứa CallMethodAction. Trang đó dành cho Silverlight và đây là WPF, vì vậy tôi lo ngại rằng hành động đó không còn khả dụng nữa.

Vì vậy, có ai biết nếu thực tế nó đã bị xóa/thay thế không? Làm thế nào là một trong những vụ phải gọi xử lý sự kiện trên viewmodel bây giờ?

(Tôi biết về InvokeCommandAction, nhưng tôi thích CallMethodAction vì nó chuyển tiếp các đối số sự kiện ban đầu, và cho phép hủy bỏ sự kiện xem trước.)

Sửa: Chỉ cần để di chuyển về phía trước tôi đã cố gắng InvokeCommandAction nhưng nó không còn cũng hoạt động theo cách tương tự và tôi không thể tìm thấy bất kỳ tài liệu nào về cách sử dụng mới.

Tôi đã tìm thấy this reference on MSDN cho không gian tên Microsoft.Xaml.Interactions dường như chứa các lớp tôi cần, nhưng hội đồng đó dường như không tồn tại.

Tôi cảm thấy như tôi thiếu điều gì đó hiển nhiên ở đây. Tôi không thấy làm thế nào họ có thể tạo ra một sự thay đổi đột phá cho một cái gì đó cơ bản như đáp ứng với các sự kiện.

+0

Có thể thay đổi khung đích sẽ giúp –

+0

xem câu trả lời @nmarler - đây là câu trả lời đúng vì nó không phụ thuộc vào gói nuget –

Trả lời

38

Sử dụng Visual Studio 2017 cài đặt để cài đặt "Blend cho Visual Studio SDK cho .NET", mà bạn có thể tìm thấy trên trang "Thành phần riêng lẻ", trong tiêu đề "SDK, thư viện và khung".

+1

đây là giải pháp được đề nghị –

+0

Đúng, đã thay đổi câu trả lời của tôi, cảm ơn. Tôi đã không nhận thấy điều này. – amnesia

6

CallMethodAction được định nghĩa trong Microsoft.Expressions.Interactions.dll. lắp ráp Đây không phải là một phần của .NET Framework nhưng bạn có thể tải nó bằng cách sử NuGet: https://www.nuget.org/packages/MicrosoftExpressionInteractions/

Và lớp InvokeCommandAction được định nghĩa trong System.Windows.Interactivity.dll lắp ráp: https://www.nuget.org/packages/System.Windows.Interactivity.WPF/

+0

Các ExpressionInteractions được liên kết là phiên bản cũ và không chính thức, tôi đã có gói mới nhất Doanh nghiệp VS2017. Khóa đã cài đặt System.Windows.Interactivity.WPF cũng đã cài đặt phiên bản EI hiện tại và cung cấp cho tôi các không gian tên và chức năng quen thuộc. Tôi đã luôn luôn chỉ được sử dụng lắp ráp System.Windows.Interactivity cốt lõi trước, không bao giờ phải cài đặt từ nuget, vì vậy tôi đoán đây là sự thay đổi. Cảm ơn! – amnesia

+0

Xin lỗi vì đã thay đổi câu trả lời đã chấp nhận, nhưng giải pháp của @ nmarler dưới đây thực sự là giải pháp đúng. – amnesia

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