在这个示例中,我有两个按钮。标题中的按钮有效,但网格中的按钮给出了下面显示的错误。
<GroupBox DockPanel.Dock="Top" >
<GroupBox.Header>
<StackPanel Orientation="Horizontal">
<Label Content="Recent Servers" />
<CheckBox Content="Auto-Refresh" />
<Button Content="Monitor" Command="{Binding MonitorCommand, ElementName=Top}" CommandParameter="{Binding}" />
</StackPanel>
</GroupBox.Header>
<DataGrid CanUserAddRows="False" CanUserDeleteRows="False" AutoGenerateColumns="False" ItemsSource="{Binding ServerHistory}" >
<DataGrid.Columns>
<DataGridTextColumn Header="Machine Name" Binding="{Binding DataPoints[ServerName], Mode=OneWay}" />
<DataGridTextColumn Header="Last Heartbeat" Binding="{Binding DataPoints[LastHeartbeat], Mode=OneWay}"/>
<DataGridTemplateColumn Header="Monitor">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Content="Monitor" Command="{Binding MonitorCommand, ElementName=Top}" CommandParameter="{Binding}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</GroupBox>
System.Windows.Data错误:4:无法找到引用'ElementName = Top'的绑定源。 BindingExpression:路径= MonitorCommand;的DataItem = NULL; target元素是'Button'(Name =''); target属性是'Command'(类型'ICommand')
答案 0 :(得分:0)
我相信这是因为你的第二个按钮是作为模板的一部分包含在内的。有一个点击事件,在后面的代码中抓住它并尝试计算发送者与数据的关系,然后发出命令触发器。