Wpf datagrid命令属性中的按钮

Wpf datagrid命令属性中的按钮,wpf,mvvm,datagrid,Wpf,Mvvm,Datagrid,我有一个带有以下XAML的DataGrid。首先,网格内的按钮没有蓝色样式,其次,当按下按钮时,Command属性不起作用,但OnClick起作用。在视图模型中,我使用了RelayCommand实现,它与其他控件配合良好,只有DataGrid中的按钮似乎有问题 <DataGrid x:Name="dgEntities" Width="650" Height="239" Margin="40,-48,65,-8" ItemsSource="{Bind

我有一个带有以下XAML的DataGrid。首先,网格内的按钮没有蓝色样式,其次,当按下按钮时,Command属性不起作用,但OnClick起作用。在视图模型中,我使用了RelayCommand实现,它与其他控件配合良好,只有DataGrid中的按钮似乎有问题

 <DataGrid 
   x:Name="dgEntities" 
   Width="650" 
   Height="239" 
   Margin="40,-48,65,-8" 
   ItemsSource="{Binding JobEntities}" 
   AutoGenerateColumns="False">
   <DataGrid.Columns>
      <DataGridTemplateColumn Header="Status">
         <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
               <Button 
                  Margin="5" 
                  Content="{Binding TaskDetails[0].Status,Mode=TwoWay,NotifyOnTargetUpdated=True}"
                  Command="{Binding HypelinkCommand}" 
                  CommandParameter="{Binding ElementName=dgEntities,Path=SelectedItem}"
                  Cursor="Hand" 
                  Click="Button_Click">
                  <Button.Template>
                     <ControlTemplate TargetType="Button">
                        <TextBlock TextDecorations="Underline">
                           <ContentPresenter />
                        </TextBlock>
                     </ControlTemplate>
                  </Button.Template>
                  <Button.Style>
                     <Style TargetType="Button">
                        <Setter Property="Foreground" Value="Blue" />
                     </Style>
                  </Button.Style>
               </Button>
            </DataTemplate>
         </DataGridTemplateColumn.CellTemplate>
      </DataGridTemplateColumn>
      <DataGridTemplateColumn>
         <DataGridTemplateColumn.Header>
            <CheckBox Name="chkHeaderExtract" Checked="ChkHeaderExtract_OnChecked" Unchecked="ChkHeaderExtract_OnUnchecked"/>
         </DataGridTemplateColumn.Header>
         <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
               <CheckBox Name="chkExtract" IsChecked="{Binding TaskDetails[0].IsSelected,Mode=TwoWay,NotifyOnTargetUpdated=True}"/>
            </DataTemplate>
         </DataGridTemplateColumn.CellTemplate>
      </DataGridTemplateColumn>
      <DataGridTemplateColumn Header="Status">
         <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
               <Button 
                  Margin="5" 
                  Content="{Binding TaskDetails[1].Status,Mode=TwoWay,NotifyOnTargetUpdated=True}"
                  Command="{Binding HypelinkCommand}" 
                  CommandParameter="{Binding ElementName=dgEntities,Path=SelectedItem}"
                  Cursor="Hand">
                  <Button.Template>
                     <ControlTemplate TargetType="Button">
                        <TextBlock TextDecorations="Underline">
                           <ContentPresenter />
                        </TextBlock>
                     </ControlTemplate>
                  </Button.Template>
                  <Button.Style>
                     <Style TargetType="Button">
                        <Setter Property="Foreground" Value="Blue" />
                     </Style>
                  </Button.Style>
               </Button>
            </DataTemplate>
         </DataGridTemplateColumn.CellTemplate>
      </DataGridTemplateColumn>
      <DataGridTemplateColumn>
         <DataGridTemplateColumn.Header>
            <CheckBox Name="chkHeaderTransform" Checked="ChkHeaderTransform_OnChecked" Unchecked="ChkHeaderTransform_OnUnchecked"/>
         </DataGridTemplateColumn.Header>
         <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
               <CheckBox Name="chkTransform" IsChecked="{Binding TaskDetails[1].IsSelected,Mode=TwoWay,NotifyOnTargetUpdated=True}"/>
            </DataTemplate>
         </DataGridTemplateColumn.CellTemplate>
      </DataGridTemplateColumn>
      <DataGridTemplateColumn Header="Status">
         <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
               <Button 
                  Margin="5" 
                  Content="{Binding TaskDetails[2].Status,Mode=TwoWay,NotifyOnTargetUpdated=True}"
                  Command="{Binding HypelinkCommand}" 
                  CommandParameter="{Binding ElementName=dgEntities,Path=SelectedItem}"
                  Cursor="Hand" 
                  Foreground="Blue">
                  <Button.Template>
                     <ControlTemplate TargetType="Button">
                        <TextBlock TextDecorations="Underline">
                           <ContentPresenter />
                        </TextBlock>
                     </ControlTemplate>
                  </Button.Template>
               </Button>
            </DataTemplate>
         </DataGridTemplateColumn.CellTemplate>
      </DataGridTemplateColumn>
      <DataGridTemplateColumn>
         <DataGridTemplateColumn.Header>
            <CheckBox Name="chkHeaderLoad" Checked="ChkHeaderLoad_OnChecked" Unchecked="ChkHeaderLoad_OnUnchecked"/>
         </DataGridTemplateColumn.Header>
         <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
               <CheckBox Name="chkLoad" IsChecked="{Binding TaskDetails[2].IsSelected,Mode=TwoWay,NotifyOnTargetUpdated=True}"/>
            </DataTemplate>
         </DataGridTemplateColumn.CellTemplate>
      </DataGridTemplateColumn>
      <DataGridTextColumn Binding="{Binding EntityName}"  Header="Entity" Width="150"/>
   </DataGrid.Columns>
</DataGrid>
代码作为注释发布,而不是更新到原始帖子

private RelayCommand<object> _hyperlinkInstance; 
public ICommand HypelinkCommand 
{ 
    get 
    { 
        if(_hyperlinkInstance==null) 
               _hyperlinkInstance = new RelayCommand<object>(openDialog); 
        return _hyperlinkInstance; 
    } 
} 

private void openDialog(object obj) 
{ 
    JobConfigurationResults results = obj as JobConfigurationResults; 
    jeresult = JobEntities.SingleOrDefault(
                           x => x.JobEntityId == results.JobEntityId); 
}

HypelinkCommand是否与TaskDetails对应的视图模型是每个DaraGrid行后面的视图模型?你说没有蓝色的发型是什么意思?这是否意味着按钮文本不会变为蓝色?是的,Hyperlink命令与TaskDetails的视图模型相同。蓝色样式意味着,由于我将setter属性值设置为蓝色,我希望按钮看起来像超链接,但它显示为黑色字体。HypelinkCommand或HyperLinkCommand?你能给出定义或属性吗?你试过“嘿,dkozl,是的,它是HypelinkCommand.”。。我刚刚从视图模型复制并粘贴了ICommand实现。