单击数据网格列标题中的元素

我已将自定义样式应用于 DataGrid 的列标题。这是它的简化版本:


<Style x:Key="DataGridColumnHeaderStyle" TargetType="{x:Type DataGridColumnHeader}">

    <Setter Property="Template">

        <Setter.Value>

            <ControlTemplate TargetType="DataGridColumnHeader">

                <Grid>

                    <Border BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" BorderThickness="{TemplateBinding BorderThickness}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" VerticalAlignment="{TemplateBinding VerticalAlignment}">

                        <Grid>

                            <StackPanel Orientation="Horizontal">

                                <ContentPresenter Margin="5 0 5 0" HorizontalAlignment="Center" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />

                                <Image IsHitTestVisible="True" Source="pin.png">

                                    <Image.InputBindings>

                                        <MouseBinding MouseAction="LeftClick" Command="{x:Static myView:MyCommand}" CommandParameter="{Binding}" />

                                    </Image.InputBindings>

                                </Image>

                            </StackPanel>

                        </Grid>

                    </Border>

                    <Thumb x:Name="PART_LeftHeaderGripper" Style="{StaticResource DataGridColumnHeaderResizeThumb}"/>

                    <Thumb x:Name="PART_RightHeaderGripper" HorizontalAlignment="Right" Style="{StaticResource DataGridColumnHeaderResizeThumb}"/>

                </Grid>

            </ControlTemplate>

        </Setter.Value>

    </Setter>

</Style>

单击图像时,我正在努力使命令触发。有什么我想念的吗?单击 DataGridColumnHeader 中的元素(即图像)时,是否有不同的方式可以触发命令?


更多细节:MyCommand 是在 Window 的 CommandBindings 中定义的。我没有在此处包含此代码。我为其他工作正常的元素(即 DataGridCell)定义了类似的其他命令。似乎有一些特定于 DataGridColumnHeader 元素阻止命令被触发的方式。


慕森王
浏览 140回答 1
1回答

杨__羊羊

似乎您绑定到MyCommandxmlns 下的类型myView;相反,您应该绑定到MyCommand(假设类MyCommand实现ICommand)的实例。你可以考虑在这里实现单例。或者您可以定义MyCommand任何地方的静态实例。
打开App,查看更多内容
随时随地看视频慕课网APP