【发布时间】:2016-07-01 12:18:00
【问题描述】:
我正在尝试学习如何使用上下文菜单。我得到了菜单,它看起来不错,但命令没有绑定到上下文菜单中。它们确实在上下文菜单下方的可见按钮堆栈面板中工作。我在输出中得到了这个:
System.Windows.Data 错误:4:找不到与引用“ElementName=MainGrid”进行绑定的源。 BindingExpression:Path=DataContext.StartClientCommand;数据项=空;目标元素是'MenuItem'(名称='');目标属性是“Command”(输入“ICommand”)
<ListBox x:Name="lbSlaves" Grid.Row="1"
ItemsSource="{Binding Slaves}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" >
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical" Width="150" >
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding IsSelected ,Mode=TwoWay}"/>
<TextBlock Text="{Binding FriendlyName, Mode=OneWay}" >
<TextBlock.ContextMenu>
<ContextMenu>
<MenuItem Header="Start"
Command="{Binding ElementName=MainGrid, Path=DataContext.StartClientCommand}"
CommandParameter="{Binding}" />
<MenuItem Header="Stop"
Command="{Binding ElementName=MainGrid, Path=DataContext.StopClientCommand}"
CommandParameter="{Binding}" />
<MenuItem Header="Calibrate"
Command="{Binding ElementName=MainGrid, Path=DataContext.CalibrateClientCommand}"
CommandParameter="{Binding}" />
</ContextMenu>
</TextBlock.ContextMenu>
</TextBlock>
</StackPanel>
<Button
Content="Start"
Command="{Binding ElementName=MainGrid, Path=DataContext.StartClientCommand}"
CommandParameter="{Binding}" />
<Button
Content="Stop"
Command="{Binding ElementName=MainGrid, Path=DataContext.StopClientCommand}"
CommandParameter="{Binding}" />
<Button
Content="Calibrate"
Command="{Binding ElementName=MainGrid, Path=DataContext.CalibrateClientCommand}"
CommandParameter="{Binding}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
【问题讨论】: