2010-02-22 56 views
0

一個動作我有一個GridView列:附加到GridViewColumnHeader模板

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模板代替$source.TemplatedParent

<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> 

我想以某種方式傳遞SortPropertyName作爲參數。

有人會知道我可以做到這一點嗎?

感謝您的任何幫助和抱歉,如果我沒有問得好 - 這是我的第一個問題在這裏。

回答

0

你試過

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

不知道,將工作...您也可以嘗試(在邊境不大,但對GridViewColumnHeaderStyle)加入風格二傳手代替。所以像這樣:

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

這只是一對夫婦的猜測。讓我知道是否有任何工作。如果沒有,請隨時在Caliburn論壇上發佈並附上示例。