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 に答える