I liked this answer, and it almost fit me.
But, how can I achieve this if my DataTemplate
is in a external ResourceDictionary
?
I'm using Prism and I provide the DataTemplates
(for generic CRUD views) by each module, by using files like this:
<ResourceDictionary ... some hidden ns here ... >
<DataTemplate DataType="{x:Type model:Operation}">
<vw:OperationView />
</DataTemplate>
<DataTemplate DataType="{x:Type model:Customer}">
<vw:CustomerView />
</DataTemplate>
</ResourceDictionary>
Then I use this answer to merge the ResourceDictionaries
into the Shell app and I have a default CRUD view which has that code:
<ContentControl Content="{Binding MyGenericObject}" />
That ContentControl
automatically pull the correct view. It's working fine, but I want to know bind the property of the objects in each view.
That's a sample of these views (OperationView.xaml):
<UserControl x:Class="TryERP2.Cadastro.View.OperationView"
... some hidden NS ... >
<StackPanel>
<Label Content="Id" />
<TextBox Text="{Binding ????WHAT????}" />
<Label Content="Description" />
<TextBox Text="{Binding ????WHAT????}" />
</StackPanel>
</UserControl>
How can I bind these properties?
Since the
DataContext
behindOperationView
will be an object of typeOperation
, then you simply bind to whatever property onOperation
you wantThe
DataContext
in theUserControl
is your model object, so you can directly bind to its properties like this:(If only a path is specified the binding is relative to the
DataContext
, note that in the answer you linked the intention was to have aTwoWay
binding on theDataContext
itself which was a primitive string, this cannot be done using a simple binding like{Binding .}
, a property path targeting an actual property needs to be specified)