附加到GridViewColumnHeader模板中的操作

时间:2010-02-22 07:26:14

标签: wpf caliburn

我有一个GridView列:

public class SortableGridViewColumn : GridViewColumn
{
    public string SortPropertyName
    {
        get { return (string)GetValue(SortPropertyNameProperty); }
        set { SetValue(SortPropertyNameProperty, value); }
    }

    public static readonly DependencyProperty SortPropertyNameProperty =
        DependencyProperty.Register("SortPropertyName", typeof(string), 
        typeof(SortableGridViewColumn), new UIPropertyMetadata(""));
}

和GridViewColumnHeader模板

<GridView.ColumnHeaderContainerStyle>
<Style TargetType="GridViewColumnHeader">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type GridViewColumnHeader}">
               <Border cal:Message.Attach="[Event MouseLeftButtonDown] 
                        = [Action Sort($source.TemplatedParent)]">
                    <ContentPresenter Margin="2,2,2,2" />
               </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style></GridView.ColumnHeaderContainerStyle>

而不是$source.TemplatedParent我想以某种方式将SortPropertyName作为参数传递。

有谁知道我怎么能做到这一点?

感谢您提供任何帮助,如果我没有正确询问,也很抱歉 - 这是我的第一个问题。

1 个答案:

答案 0 :(得分:0)

你试过吗

[Event MouseLeftButtonDown] = [Action Sort($source.TemplatedParent.SortPropertyName)]

不确定是否可行...您也可以尝试添加样式设置器(不在边框上,而是在GridViewColumnHeaderStyle上)。像这样:

<Setter Property="cal:Message.Attach"
        Value="[Event MouseLeftButtonDown] = [Action Sort($source.SortPropertyName)]" />

这只是一对猜测。如果有效,请告诉我。如果没有,请随时在Caliburn论坛上发帖并附上样本。