2010-07-27 93 views
0

在這個示例中,我有兩個按鈕。標題中的按鈕有效,但網格中的按鈕會顯示下面的錯誤信息。WPF:數據網格按鈕的命令綁定

<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 Error: 4 : Cannot find source for binding with reference 'ElementName=Top'. BindingExpression:Path=MonitorCommand; DataItem=null; target element is 'Button' (Name=''); target property is 'Command' (type 'ICommand')

+0

[綁定到數據網格中的命令]可能的重複(http://stackoverflow.com/questions/581715/binding-to-a-command-in-a-datagrid) – 2010-07-28 03:07:42

+0

不知道它是否有幫助,但我發現這個: http://stackoverflow.com/questions/581715/binding-to-a-command-in-a-datagrid – user695663 2012-06-21 22:12:13

回答

0

我相信這是因爲你的第二個按鈕被封裝成一個模板的一部分。請改爲點擊事件,在後面的代碼中抓取它,並嘗試找出發件人與數據的關係,然後發出命令觸發器。

+1

我找到了答案:http://stackoverflow.com/questions/581715/綁定到一個命令在數據網格/ 581778#581778 – 2010-07-28 03:07:19

+0

啊,這似乎是一個更好的解決方案。 – keyle 2010-07-28 03:42:26

+0

http://stackoverflow.com/questions/581715/binding-to-a-command-in-a-datagrid看看這個。 – user695663 2012-06-21 22:12:29