2013-03-16 3 views
1

J'ai un listview qui répertorie les années et une autre vue de liste qui a des groupes d'année. La vue de liste des groupes d'années est remplie à l'aide d'un filtre ICollectionView sur selectchanged de la première vue de liste.WPF Transmission de ViewModel en tant que multiparamètre

Je souhaite ajouter un nouvel enregistrement aux groupes, mais j'ai besoin de l'ID de l'élément sélectionné dans l'affichage de la liste des années en tant que clé étrangère.

Je déclare 2 ressources viewmodel statiques dans le XML. Une la liste et un nouveau groupe vide.

<local:YearGroupListViewModel x:Key="YearGroupList" /> 
<local:YearGroupViewModel x:Key="NewYearGroup" /> 

Afin de créer de nouveaux enregistrements sur d'autres pages que je passe avec succès la nouvelle viewmodel en tant que paramètre à la commande add (exemple de l'année):

<Button x:Name="btnSettingsYearsSaveAdd" x:Uid="btnSettingsYearsSaveAdd" 
    Content="Submit" Margin="0,49,10,0" 
    Style="{DynamicResource ButtonStyle}" 
    DataContext="{StaticResource ResourceKey=YearList}" 
    CommandParameter="{StaticResource ResourceKey=NewYear}" 
    Command="{Binding Path=AddCommand}" /> 

Cela fonctionne très bien sur les dossiers qui ne sont pas avoir une dépendance sur un parent listviews selecteditem id à des fins de clé étrangère.

Je suis en train d'utiliser le passage de paramètres multiples mentionné dans this question on SO

Mon problème est que je ne peux pas sembler passer le nouveau groupe Voir modèle en tant que paramètre que je peux envoyer si seulement un paramètre.

C'est là que je suis en ce moment:

XML

<Button x:Name="btnSettingsYearGroupsSaveAdd" x:Uid="btnSettingsYearGroupsSaveAdd" 
    Content="Submit" Margin="0,49,10,0" 
    Style="{DynamicResource ButtonStyle}" 
    DataContext="{StaticResource ResourceKey=YearGroupList}" 
    Command="{Binding Path=AddCommand}"> 
     <Button.CommandParameter> 
      <MultiBinding Converter="{StaticResource paramConvert}"> 
       <Binding Path="YearGroup" 
         ElementName="{StaticResource ResourceKey=NewYearGroup}"/> 
       <Binding Path="SelectedItem" 
         ElementName="lvwSettingsYears"/> 
      </MultiBinding> 
     </Button.CommandParameter> 
    </Button> 

La clé de ressource statique liaison ne fonctionne pas. J'ai essayé une douzaine de dérivés différents, mais tous échouent.

Commande

public void OnExecute(object parameter) 
    { 
     var values = (object[])parameter; 
     YearGroupViewModel newYearGroup = values[0] as YearGroupViewModel; 
     yearID = (Int32)values[1]; 
    } 

Quelqu'un at-il fait cela avant? Merci beaucoup

Répondre

1

Eh bien, je suppose que ce devrait être Source pas ElementName, si vous essayez de lier un StaticResource.

<Button x:Name="btnSettingsYearGroupsSaveAdd" x:Uid="btnSettingsYearGroupsSaveAdd" 
     Content="Submit" Margin="0,49,10,0" 
     Style="{DynamicResource ButtonStyle}" 
     DataContext="{StaticResource ResourceKey=YearGroupList}" 
     Command="{Binding Path=AddCommand}"> 
    <Button.CommandParameter> 
     <MultiBinding Converter="{StaticResource paramConvert}"> 
      <Binding Path="YearGroup" 
        Source="{StaticResource ResourceKey=NewYearGroup}"/> 
      <Binding Path="SelectedItem" 
        ElementName="lvwSettingsYears"/> 
     </MultiBinding> 
    </Button.CommandParameter> 
</Button> 
+0

Merci DHN. Je suis finalement descendu un nouveau trou de lapin avec ceci ... mais vous avez répondu à ma question et maintenant je sais :) Merci –

+0

De rien. Nous commençons tous avec de nouvelles choses. Rien à avoir honte. : o) – DHN

Questions connexes