我有一个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作为参数传递。
有谁知道我怎么能做到这一点?
感谢您提供任何帮助,如果我没有正确询问,也很抱歉 - 这是我的第一个问题。
答案 0 :(得分:0)
你试过吗
[Event MouseLeftButtonDown] = [Action Sort($source.TemplatedParent.SortPropertyName)]
不确定是否可行...您也可以尝试添加样式设置器(不在边框上,而是在GridViewColumnHeaderStyle上)。像这样:
<Setter Property="cal:Message.Attach"
Value="[Event MouseLeftButtonDown] = [Action Sort($source.SortPropertyName)]" />
这只是一对猜测。如果有效,请告诉我。如果没有,请随时在Caliburn论坛上发帖并附上样本。