Questo evento del pulsante funzionato Metodo ha passato l'elemento TreeView a ViewModel, ma l'evento di sintassi breve non è passato, dove si trova il problema? Grazie.
<Button Content="Search in TreeView" Height="34" Width="100">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="SearchTreeView">
<cal:Parameter Value="{Binding ElementName=TreeView}" />
</cal:ActionMessage>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
<TreeView x:Name="TreeView" ItemsSource="{Binding TreeViewSource}"/>
Breve evento di sintassi
<Button x:Name="SearchTreeView" Content="Search in TreeView" cal:Message.Attach="[Event Click] = [Action SearchTreeView($source.TreeView)]" />
<TreeView x:Name="TreeView" ItemsSource="{Binding TreeViewSource}"/>
risposte:
2 per risposta № 1Non è necessario specificare $ source.Treeview, solo il nome dell'elemento, TreeView
è abbastanza
<Button x:Name="SearchTreeView" Content="Search in TreeView" cal:Message.Attach="[Event Click] = [Action SearchTreeView(TreeView)]" />
<TreeView x:Name="TreeView" ItemsSource="{Binding TreeViewSource}"/>
Detto questo, NON è una buona idea passare un controlloal ViewModel. Se vuoi fare qualcosa con l'elemento selezionato, devi associare la proprietà SelectedItem di TreeView a una proprietà su ViewModel e accedervi dal metodo SearchTreeView, ad es.
<Button x:Name="SearchTreeView" Content="Search in TreeView" cal:Message.Attach="[Event Click] = [Action SearchTreeView()]" />
<TreeView x:Name="TreeView" ItemsSource="{Binding TreeViewSource}" SelectedItem={Binding MySelectedItem}"/>