itemtemplateselectror binding viewmodel
bonjour,
ma question va vous paraître très simple :
j'ai un usercontrol qui contient une listview, qui utilise itemtemplateselctor.
la page principale a un ViewModel ainsi que les usercontrol selector.
mon problème est le suivant : je veux agir sur les usercontrols des itemtemplateselector pour récupérer les valeurs saisies et faire mes traitement dessus.
voici le code xaml de ma page principale :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
<UserControl.Resources>
<DataTemplate x:Key="IntDataTemplate">
<local:IntDataTemplateView UserFieldUser="{Binding .}" />
</DataTemplate>
<DataTemplate x:Key="StringDataTemplate">
<local:StringDataTemplateView />
</DataTemplate>
<DataTemplate x:Key="DateDataTemplate">
<local:DateDataTemplateView />
</DataTemplate>
<DataTemplate x:Key="DefaultDataTemplate">
<local:DefaultDataTemplateView />
</DataTemplate>
<local:PropertyDataTemplateSelector x:Key="PropertyDataTemplateSelector"
DateDataTemplate="{StaticResource DateDataTemplate}"
DefaultDataTemplate="{StaticResource DefaultDataTemplate}"
IntDataTemplate="{StaticResource IntDataTemplate}"
StringDataTemplate="{StaticResource StringDataTemplate}" />
</UserControl.Resources>
<ListView Name="ListViewGlobal"
IsSynchronizedWithCurrentItem="True"
ItemTemplateSelector="{StaticResource PropertyDataTemplateSelector}"
ItemsSource="{Binding MesDonnees,
Mode=TwoWay}"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
SelectedValue="{Binding SelectedValue,
Mode=TwoWay}"
SelectionMode="Extended">
</ListView> |
le code xaml d'un de mes usercontrol tempalteselector :
Code:
1 2 3 4 5 6 7 8 9 10
|
<Grid x:Name="RootGrid">
<TextBox MinWidth="100"
Margin="5 0 5 0"
Text="{Binding InputValue,
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}" />
</Grid> |
le code c# du templateselctor :
Code:
1 2 3 4 5 6 7 8 9
|
public override System.Windows.DataTemplate SelectTemplate(object item, DependencyObject container)
{
MonViewModel mv = item as MonViewModel ;
switch(mv)
{
case mv.int :
return IntDataTemplate;
... |
le selector marche bien, je choisi le bon usercontrol, le champ textbox est bien rempli, mais je n'arrive pas à récuperer la valeur modifié de mon textbox et faire mes traitements dessus :(. comment je peux faire pour injecter les données dans le viewmodel de mon usercontrol template ?
ensuite, je dois renvoyer cette valeur a mon usercontrol principale, autre probème.
merci d'avance de votre aide :)