I'm Using Uno-Platform with MVVMLight trying to structure my project. Should I put platform specific code inside ViewModel? or should it mostly be in Utils/Services?
Where should most of my platform specific code be in MVVM? (Beside View)
207 Views Asked by Flippidy Joe At
1
There are 1 best solutions below
Related Questions in MVVM
- How can I fit "ol.Map" to "Ext.panel.Panel"?
- How to not open the same Popup WPF MVVM?
- How to set data context of ViewModela View's xaml?
- Asynchronous MVVM commands
- Proper MVVM ViewModel and Model pattern
- Modeling an XML hierarchy for traversal with MVVM
- Ext JS 5 Data Binding Combobox
- Combobox and IDataErrorInfo
- Change default error message when enter non digit in a textbox requires integer
- MVVM: Updating ViewModel properties based on Model properties
- Problems related to View Models created from XAML
- Cant bind enum to combobox wpf mvvm
- RadioButtons binding on Windows Phone 8.1
- Cascading Comboboxes WPF mvvm and EF
- Update DataGrid cell if other cell changes
Related Questions in MVVM-LIGHT
- Asynchronously loading Blendable sample data in MVVM Light in the view model's constructor
- WPF and MVVMLight - Open tooltip of a button when another button is clicked
- Implementation of IDataErrorInfo, excessive use of if-statements
- MVVM Light Dispatcher helper design time error
- MvvmLight ViewmodelLocator StaticResource stops loading
- Service Locator works from app but not dynamically-instantiated class
- Xamarin.Forms PCL MVVM Light > Custom Control > Best Practice?
- MVVM Light and set data model field
- I can not get MVVM to work
- MVVM Light SimpleIoc instance resolution
- Mvvm light messenger strange working
- How to pass the updated text by CommandParameter in TextChagned event?
- use string value of mvvm message as variable in viewmodel
- RelayCommand with parameter
- Universal Windows App with MS SQL Server
Related Questions in UNO-PLATFORM
- UNO Material BottomNavigationBar Event Handler
- Back button no longer shows arrow
- "Unable to find constructor" when serializing JSON in Uno WASM
- Uno WASM could not resolve package when using DLL
- Uno Platform - how to use UserControls from a different project?
- uno-platform wasm debugging
- Why does WebAssembly fail to build on fresh Uno Platform template
- Are there any code samples for Uno platform accessing MSSQL, PostgreSQL or MYSQL?
- Web Assembly not compiling with linker error [Uno Platform]
- WebAssembly in Uno platform not compiling due to an error on Microsoft.Toolkit.Uwp.UI.dll
- CommandBar: Style 'XamlDefaultCommandBar' not found
- [iOS][Android]: How to hide the status bar with platform UNO?
- Content Build Action for Resource Files in the Uno Platform
- How to get uri to included asset in Uno Platform?
- How to get Android.Content.Context object in Android head
Related Questions in SHARED-PROJECT
- Shared project with resource dictionary (xaml)
- How to use Custom Renderer in Xamarin Shared Project
- Newtonsoft.json serializing and deserializing base/inheirited where classes are from shared projects
- Shared projects and resource files
- Xamarin.Forms Shared Project Web Service
- Preventing mobile projects from using certain .cs files in a Shared Project
- Reference something from a shared project
- Can I store resources and Windows Forms in a Visual Studio Shared Project?
- Xamarin Forms Shared Play Mp3 file on Android
- Where should most of my platform specific code be in MVVM? (Beside View)
- Xamarin Shared Project on Rider?
- Xamarin Sharing A Base Android and iOS Project with multiple Android and iOS apps
- Visual Studio 2019, how to use Image located in Shared Project in WPF/XAML?
- Connect Xamarin Cross-Platform project to OData Service
- Xamarin Shared Library and PCL
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
I would recommend placing platform-specific code inside utility classes or services. Placing that code inside ViewModels would make it harder to reuse and potentially make the ViewModel impossible to run tests against.
Ideally, (not mandatory) you'll want to use Interfaces and dependency injection, provide one implementation for each platform you want to support, and try to implement the same interface for all of them. That way, your ViewModel will not have
#if PLATFORM_Acode.Side note, remember Uno platform already offers a lot of platform abstractions through the UWP APIs. Like Geolocator, sensors etc.