У меня есть собственный элемент управления ListView, который принимает список ModelItems в качестве его ItemsSource:
<customControls:ListViewEx Name="DocumentListView"
ItemsSource="{Binding ModelItems, Mode=OneWay}">
У меня также есть свойство зависимости GridViewColumnHeaderClick.HeaderClick
, тип свойства которого object
:
public static readonly DependencyProperty HeaderClickProperty = DependencyProperty.RegisterAttached(
"HeaderClick",
typeof(object),
typeof(GridViewColumnHeaderClick),
new UIPropertyMetadata(null, OnHeaderClickChanged));
Я бы хотел, чтобы значение ModelItems
было передано в качестве значения этого свойства зависимости, и я попытался сделать это так:
<GridView.ColumnHeaderContainerStyle>
<Style BasedOn="{StaticResource {x:Type GridViewColumnHeader}}" TargetType="{x:Type GridViewColumnHeader}">
<Setter Property = "misc:GridViewColumnHeaderClick.HeaderClick"
Value="{Binding ModelItems}"/>
</Style>
</GridView.ColumnHeaderContainerStyle>
и в C #:
ICollectionView dataView =
CollectionViewSource.GetDefaultView(HeaderClickProperty);
Однако, кажется, ничего не происходит, когда я нажимаю на заголовок. Я не уверен, что это потому, что я неправильно связываю его в XAML, или что-то совершенно другое.
РЕДАКТИРОВАТЬ: извинения за отсутствие деталей, я понимаю, что это немного грязно.
Моя общая цель - запустить функцию сортировки, щелкнув заголовок GridViewColumn. GridView
- это ребенок ListViewEx
. При щелчке по заголовку я хочу привязать его к свойству HeaderClick
и установить значение как ItemsSource
из ListView
(в данном случае ItemsSource=ModelItems
), чтобы я мог его отсортировать.
При нажатии запускается функция OnHeaderClickChanged
:
private static void OnHeaderClickChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
{
var headerClicked = sender as GridViewColumnHeader;
headerClicked.MouseUp += (s, me) => HeaderClickedOnMouseUp(s, me, e.NewValue);
}
Это добавляет функцию HeaderClickedOnMouseUp
к событию MouseUp
. Эта функция выполняет сортировку с ModelItems
.
Моя проблема в том, что я не понимаю, когда речь идет о зависимостях / вложенных свойствах и о том, как связать их с представлением. Как правильно упомянуто в комментариях, сеттер не вызывается в любой момент, когда я пытаюсь отладить его, и я теряюсь в том, почему это так.