WPF:数据网格中按钮的命令绑定

时间:2010-07-27 21:20:25

标签: wpf binding wpfdatagrid

在这个示例中,我有两个按钮。标题中的按钮有效,但网格中的按钮给出了下面显示的错误。

<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')

1 个答案:

答案 0 :(得分:0)

我相信这是因为你的第二个按钮是作为模板的一部分包含在内的。有一个点击事件,在后面的代码中抓住它并尝试计算发送者与数据的关系,然后发出命令触发器。