2013-11-27 31 views
7

Tôi đang tìm hiểu để bắt đầu với phát triển ứng dụng C#. Tôi có kinh nghiệm về công nghệ dựa trên web nhưng tôi chỉ mới bắt đầu với máy tính để bàn/MVVM.Sử dụng giao diện người dùng không chuẩn với mvvmcross? (databindings cho những thứ như gtksharp)

Tôi đã xem và đọc trên nhiều hướng dẫn mvvmcross khác nhau, và tôi thực sự mong muốn được làm việc trên một ứng dụng bằng cách sử dụng khung công tác, nhưng tôi chỉ có một câu hỏi nhanh có thể liên quan đến dữ liệu hơn mvvmcross chính nó:

Nếu tôi xây dựng ứng dụng của mình.core thông qua thư viện mvvmcross, sẽ dễ dàng sử dụng lại thư viện cốt lõi đó để phát triển UI cho các mục tiêu không phải là mvvmcross không?

Tôi hiểu rằng mvvmcross đơn giản hoá một LOT của logic hiển thị, vì vậy bằng cách làm này, tôi sẽ phải viết lên mã để kết nối với giao diện đồ họa khác sử dụng phương pháp của họ, nhưng tôi đang tự hỏi nếu ai cũng có thể nhận xét về

a) Cho dù đó sẽ có thể

b) Nếu nó sẽ có thể mà không có nhiều cách giải quyết/hacking xung quanh thực hiện cốt lõi mvvmcross tôi.

Trường hợp sử dụng của tôi là tôi dự định sử dụng mvvmcross để phát triển cho WPF hoặc WinStore trước, sau đó, nếu có nhu cầu, hãy thêm giao diện người dùng Mac. Nhưng cuối cùng, nếu nhu cầu ở đó, tôi muốn có thể cũng chuyển ứng dụng của tôi sang Linux (có thể thông qua gtksharp, bởi vì nó có vẻ như trước đây là phát triển xa nhất). Dự án application.gtk của tôi có thể dễ dàng gọi/làm việc với các lớp, phương thức và hàm được định nghĩa trong ứng dụng lõi mvvmcross hay logic đó phải được viết lại để xử lý dữ liệu theo cách phù hợp hơn với gtksharp?

Cảm ơn.

+0

Tôi muốn được quan tâm nếu bạn phát hiện ra bất cứ điều gì khác, tôi chỉ đang nghiên cứu một dự án tương tự –

+0

Không, tôi đã không thực sự nhận được bất cứ nơi nào sau câu hỏi này. Cuộc sống trở nên bận rộn nên dự án đã buồn bã bị bỏ rơi. Tốt nhất của may mắn về những gì bạn đang làm việc trên mặc dù. – dkisselev

+0

Tôi thực sự tò mò muốn xem xét điều này, vì điều đó cho phép thêm Mac và Linux vào danh sách nền tảng, có nghĩa là bao gồm gần như tất cả các hệ điều hành. Có lẽ nó sẽ dễ dàng hơn với MvvmLight. Tôi đoán phần phức tạp nhất sẽ là mã phụ thuộc vào nền tảng cổng khi nói đến ràng buộc các sự kiện để xem các thuộc tính. (Tôi hy vọng) phần còn lại là mã di động. –

Trả lời

0

Thông thường khi phát triển lõi với MvvmCross (nhưng thực sự bất kỳ mẫu Mvvm nào sử dụng kiểu phát triển), Core không nên phụ thuộc vào bất kỳ giao diện người dùng nào, và do đó có thể sử dụng lại trên bất kỳ nền tảng nào. Tuy nhiên hiện tại không có hỗ trợ nền tảng cho gtk trong MvvmCross.

Tôi không thực sự quen thuộc với gtk, nhưng tôi cho rằng nó có thể xây dựng lớp liên kết cho Linux theo cách tương tự như đã được thực hiện cho Android và iOS. Vì vậy, về mặt lý thuyết, bạn sẽ có thể tái sử dụng các thư viện Core trên Linux cũng như sử dụng Mono, vì lớp liên kết cho Linux sẽ được phát triển cho MvvmCross. Tôi muốn được quan tâm để xem bất cứ ai bắt đầu poking xung quanh nếu điều này là thực sự có thể.

0

Xin lỗi vì trả lời siêu muộn, nhưng tôi không thực sự nghĩ điều này là quá khả thi, ít nhất như đã nêu. Vấn đề chính, như tôi thấy, là MvvmCross có thể sẽ phải là một phụ thuộc đối với hầu hết các thư viện cốt lõi của bạn. Bạn chắc chắn có thể có một thư viện cốt lõi với điều đó như là một sự phụ thuộc và chỉ không thực sự sử dụng nó, nhưng điều đó có vẻ như một sự lãng phí và loại đi ngược lại câu hỏi như được hỏi.

Nếu không có sự phụ thuộc, bạn sẽ mất khá nhiều thứ, thực sự là tất cả những thứ tạo nên một khung làm đẹp. Những gì bạn thực sự muốn làm là chỉ cần thực hiện INotifyPropertyChanged và làm việc ra khỏi đó. Một số thư viện đơn giản khác mà bạn có thể sử dụng bao gồm thư viện Bind từ Praeclarum (https://github.com/praeclarum/Bind), Fody.PropertyChanged (https://github.com/Fody/PropertyChanged), Json.NET và SqLite.NET để đạt được một thư viện lõi cơ bản nhưng mạnh mẽ có thể được thêm vào với một thư viện dựa trên MvvmCross, nhưng tôi không biết liệu có lý do nào để làm điều đó không. Một liên kết hữu ích khác sẽ là: http://arteksoftware.com/end-to-end-mvvm-with-xamarin/.

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