在 TreeViewItem (CaliburnMicro) 中调用选定事件时如何为视图模型正确绑定操作

How to proper bind action for view model when invoking Event Selected in TreeViewItem (CaliburnMicro)

我在 XAML 中使用 TreeViewItem 调用操作时遇到问题。我的 XAML 如下:

    <TreeView Name="SystemNodes" ItemsSource="{Binding FirstGeneration}" Margin="0,0,0,0" HorizontalAlignment="Left" Grid.Row="1" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
        <TreeView.ItemContainerStyle>
            <Style TargetType="{x:Type TreeViewItem}">
                <Setter Property="cal:Message.Attach" Value="[Event Selected] = [Action SendMyText]"/>
            </Style>
        </TreeView.ItemContainerStyle>

当我 运行 这段代码时,我得到异常方法 SendMyText 未找到。但另一方面,在同一个视图中,我有以下代码:

     <StackPanel Grid.Row="4">
        <TextBox Text="{Binding Path=MyText, Mode=TwoWay}"/>
        <Button Content="Click me" cal:Message.Attach="[Event Click] = [Action SendMyText]"/>
    </StackPanel>

这里有效。为什么第一种方法行不通而第二种方法行得通?

不要使用 TreeView.ItemContainerStyle,而是将其替换为:

<i:Interaction.Triggers>
    <i:EventTrigger EventName="SelectedItemChanged">
        <cal:ActionMessage MethodName="SendMyText" />
    </i:EventTrigger>
</i:Interaction.Triggers>