/ / Източник на пропуск елемент източник с кратък синтаксис - caliburn.micro

Източник на източника на събитие Pass с кратък синтаксис - caliburn.micro

Този метод работи с бутон събитие преминали 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}"/>