在 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>
我在 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>