0

我有一个 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 作为参数传递。

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

感谢您的帮助,如果我问的不正确,我很抱歉 - 这是我在这里的第一个问题。

4

1 回答 1

0

你有没有尝试过

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

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

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

这只是一些猜测。让我知道是否有任何效果。如果没有,请随时在 Caliburn 论坛上发帖并附上示例。

于 2010-02-22T17:17:38.223 回答