Reputation: 8363
I am pretty new to WPF MVVM, so pardon me if I understood MVVM concepts wrongly.
I have a DataGrid
in my View, which I have bound the ItemsSource
to an ObservableCollection<M>
in the ViewModel. The M
class is a Model class. However, the M
class has bool
properties, which are to be displayed in the DataGrid as "Yes/No"
strings.
Currently, I am using a Converter to convert the bool
value to string
. But, it just feels wrong for the ViewModel to expose a list (ObservableCollection)
of a Model to the View. I have also read that in MVVM, conversions should be done at ViewModel. So, what is the right way to implement this the MVVM way for a DataGrid
?
Upvotes: 0
Views: 704
Reputation: 4464
Using converters is not a wrong way. As per my suggestion, you should bind the data as you're doing now and in the view you can create and use a BoolToStringConverter for converting the boolean value to yes or no.
Upvotes: 0
Reputation: 7944
In an ideal world, you would wrap your Model
objects in their own ViewModel
so that your ObservableCollection
contains a ViewModel
type with those bool
Model
properties converted to Yes/No string
properties.
However, in a pragmatic world, if you are not editing those values, I wouldn't bother except to note that if you are exposing many of those bool
properties and have many thousands of rows, you will take a performance hit on rendering the grid while the DataGrid
instantiates a Converter
per property and row.
Upvotes: 1