2014-09-20 158 views
1
<DataGrid ItemsSource="{Binding Occerences}" 
      AutoGenerateColumns="False" 
      IsReadOnly="True"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="Start index" Binding="{Binding Start}" /> 
     <DataGridTextColumn Header="End index" /> 
     <DataGridTextColumn Header="Length" /> 
     <DataGridTextColumn Header="Pattern" /> 
     <DataGridTemplateColumn Header="Sequence"> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <Button Content="Sequence" Command="{Binding SequenceCommand}" /> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
     <DataGridTemplateColumn Header="Export"> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <Button Content="Export" /> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
    </DataGrid.Columns>  
</DataGrid> 

<Button Content="Sequence" Command="{Binding SequenceCommand}" /> 

這不起作用。如何綁定到SequenceCommand(MyViewModel,ICommand SequenceCommand)?從DataGridTemplateColumn命令綁定

我不能使用框架(mvvm光工具套件,棱鏡等)。

回答

4

CellTemplate的DataTemplate中的DataContext將被更改爲綁定到未找到SequenceCommand的當前項目。你必須一的RelativeSource設置爲DataGrid,並設置爲PathDataContext.SequenceCommand這樣的:

<Button Content="Sequence" 
     Command="{Binding RelativeSource={RelativeSource AncestorType=DataGrid}, 
     Path=DataContext.SequenceCommand}" /> 
+0

不要忘了把'DataContext',否則它會尋找'DataGrid.SequenceCommand'不存在 – 2017-09-08 02:07:39