
XML
<telerik:RadTreeView
x:Name="myTree"
Grid.Row="1"
Grid.Column="0"
ItemsSource="{Binding MyAction.ActionList}"
SelectedItem="{Binding SelectedActionNode, Mode=TwoWay}">
<telerik:RadTreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding SonActionNodeList}">
<StackPanel Orientation="Horizontal" Tag="{Binding DataContext, ElementName=root}">
<Image
Width="16"
Height="16"
RenderOptions.BitmapScalingMode="HighQuality"
RenderOptions.EdgeMode="Aliased"
SnapsToDevicePixels="True"
Source="{Binding ActionNodeType, Converter={StaticResource ImageSourceConverter}}" />
<TextBlock
Margin="5,0"
HorizontalAlignment="Stretch"
Text="{Binding Name}" />
<Border
Width="10"
Height="10"
Background="{Binding ExecutionState, Converter={StaticResource SingleFlowExecutionStateToBrushColor}}" />
<Border />
<Border
Width="10"
Height="10"
Visibility="{Binding IsSkip, Converter={StaticResource Bool2VisibilityConverter}}">
<Path
Data="{StaticResource SkipGeometry}"
Fill="OrangeRed"
Stretch="Uniform" />
</Border>
<StackPanel.ContextMenu>
<ContextMenu DataContext="{Binding PlacementTarget.Tag, RelativeSource={RelativeSource Self}}">
<MenuItem
Command="{Binding ActionControlCommand}"
CommandParameter="删除树节点"
Header="删除">
<MenuItem.Icon>
<Path
Width="16"
Height="16"
Data="{StaticResource DeleteGeometry2}"
Fill="Red"
Stretch="Uniform" />
</MenuItem.Icon>
</MenuItem>
<Separator />
<MenuItem
Command="{Binding ActionControlCommand}"
CommandParameter="添加子项"
Header="添加子项"
IsEnabled="{Binding SelectedActionNode.ActionNodeType, Converter={StaticResource ActionTypeToBool}}">
<MenuItem
Command="{Binding ActionControlCommand}"
CommandParameter="添加同步序列"
Header="同步序列" />
<MenuItem
Command="{Binding ActionControlCommand}"
CommandParameter="添加异步序列"
Header="异步序列">
<MenuItem.Icon>
<Path
Width="16"
Height="16"
Data="{StaticResource MultiThreadGeometry}"
Fill="LightSeaGreen"
Stretch="Uniform" />
</MenuItem.Icon>
</MenuItem>
<MenuItem
Command="{Binding ActionControlCommand}"
CommandParameter="添加单步"
Header="单步动作" />
</MenuItem>
<MenuItem
Command="{Binding ActionControlCommand}"
CommandParameter="上方插入"
Header="上方插入" />
<MenuItem
Command="{Binding ActionControlCommand}"
CommandParameter="下方插入"
Header="下方插入" />
<MenuItem
Command="{Binding ActionControlCommand}"
CommandParameter="上移"
Header="上移" />
<MenuItem
Command="{Binding ActionControlCommand}"
CommandParameter="下移"
Header="下移" />
<MenuItem
Command="{Binding ActionControlCommand}"
CommandParameter="复制"
Header="复制">
<MenuItem.Icon>
<Path
Width="16"
Height="16"
Data="{StaticResource CopyGeometry2}"
Fill="LightSlateGray"
Stretch="Uniform" />
</MenuItem.Icon>
</MenuItem>
<MenuItem
Command="{Binding ActionControlCommand}"
CommandParameter="粘贴"
Header="粘贴" />
<MenuItem
Command="{Binding ActionControlCommand}"
CommandParameter="保存为常用"
Header="保存为常用" />
</ContextMenu>
</StackPanel.ContextMenu>
</StackPanel>
</HierarchicalDataTemplate>
</telerik:RadTreeView.ItemTemplate>
</telerik:RadTreeView>
要点:
条目模板上:
<StackPanel Orientation="Horizontal" Tag="{Binding DataContext, ElementName=root}">
条目右键菜单上:
<ContextMenu DataContext="{Binding PlacementTarget.Tag, RelativeSource={RelativeSource Self}}">
把主ViewModel 通过Tag传递到 右键菜单可以访问到的地方。