Този метод работи с бутон събитие преминали TreeView елемент на ViewModel, но кратко събитие синтаксис не е преминал, Къде е проблемът? Благодаря.
<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}"/>
Кратко синтактично събитие
<Button x:Name="SearchTreeView" Content="Search in TreeView" cal:Message.Attach="[Event Click] = [Action SearchTreeView($source.TreeView)]" />
<TreeView x:Name="TreeView" ItemsSource="{Binding TreeViewSource}"/>
Отговори:
2 за отговор № 1Не е необходимо да посочвате $ source.Treeview, само името на елемента, TreeView
е достатъчно
<Button x:Name="SearchTreeView" Content="Search in TreeView" cal:Message.Attach="[Event Click] = [Action SearchTreeView(TreeView)]" />
<TreeView x:Name="TreeView" ItemsSource="{Binding TreeViewSource}"/>
Това каза, че НЕ е добра идея да мине контролкъм ViewModel. Ако искате да направите нещо с избрания елемент, трябва да свържете свойството TreeView SelectedItem на собственост във вашия ViewModel и да получите достъп до него от вашия метод SearchTreeView, напр.
<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}"/>