如何绑定wpf风格的按钮命令

本文关键字:风格 按钮 命令 wpf 何绑定 绑定 | 更新日期: 2023-09-27 18:27:43

我在radgridview标头中使用了一个带有按钮的样式作为HeaderCellStyle。按钮放置正确,但命令没有调用

以下是我的代码:

<telerik:GridViewImageColumn Header="" 
                                         Width="30"
                                         ImageHeight="30" 
                                         IsResizable="False" 
                                         DataMemberBinding="{Binding Image}"                                             
                                         HeaderCellStyle="{StaticResource ButtonStyle}"  >
              </telerik:GridViewImageColumn>

按钮样式:

<Style TargetType="telerik:GridViewHeaderCell" x:Key="ButtonStyle">
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="telerik:GridViewHeaderCell">
        <telerik:RadButton x:Name="ClearButton"  Content="{Binding ClearButton,Source={StaticResource FrameworkInfrastructureResources}}"
                           ToolTip="{Binding ClearTooltip,Source={StaticResource FrameworkInfrastructureResources}}"  Margin="5"
                           IsEnabled="True" 
                           HorizontalContentAlignment="Center" 
                           Command="{Binding ClearMessagesCommand}"
        </telerik:RadButton>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

以下是我在视图模型中的命令:

  public ICommand ClearMessagesCommand { get; set; }
  ClearMessagesCommand = new DelegateCommand(() => { this.Messages.Clear(); });

如何绑定wpf风格的按钮命令

您可以使用RelativeSource绑定到单元格的数据上下文:

<telerik:RadButton x:Name="ClearButton"  Content="{Binding ClearButton,Source={StaticResource FrameworkInfrastructureResources}}"
                       ToolTip="{Binding ClearTooltip,Source={StaticResource FrameworkInfrastructureResources}}"  Margin="5"
                       IsEnabled="True" 
                       HorizontalContentAlignment="Center" 
                       Command="{Binding Path=DataContext.ClearMessagesCommand,,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type telerik:GridViewHeaderCell}}}"
</telerik:RadButton>

有关于RelativeSource的详细SO问题。您也可以尝试通过ElementName进行绑定。