Присоединить к действию в шаблоне GridViewColumnHeader - PullRequest
0 голосов
/ 22 февраля 2010

У меня есть столбец 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 голосов
/ 22 февраля 2010

Вы пробовали

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

Не уверен, что это сработает ... Вы также можете попробовать вместо этого добавить установщик стиля (не на границе, а на GridViewColumnHeaderStyle). Так вот так:

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

Это всего лишь пара догадок. Дайте мне знать, если что-то работает. Если нет, не стесняйтесь размещать сообщения на форумах Caliburn и прикреплять образец.

...