0
IこのListView
ソート手順があります。WPFのDataGridColumn DisplayMemeberBinding
/// <summary>
/// Handle the event of clicking on a column header to sort
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void GridViewColumnHeaderClicked(object sender, RoutedEventArgs e)
{
GridViewColumnHeader headerClicked = e.OriginalSource as GridViewColumnHeader;
if (headerClicked == null)
return;
if (headerClicked.Role == GridViewColumnHeaderRole.Padding)
return;
>>> var sortingColumn = (headerClicked.Column.DisplayMemberBinding as Binding)?.Path?.Path;
if (sortingColumn == null)
return;
var direction = ApplySort(Items, sortingColumn);
if (direction == ListSortDirection.Ascending)
{
headerClicked.Column.HeaderTemplate =
Resources["HeaderTemplateArrowUp"] as DataTemplate;
}
else
{
headerClicked.Column.HeaderTemplate =
Resources["HeaderTemplateArrowDown"] as DataTemplate;
}
// Remove arrow from previously sorted header
if (_lastHeaderClicked != null && _lastHeaderClicked != headerClicked)
{
_lastHeaderClicked.Column.HeaderTemplate =
Resources["HeaderTemplateDefault"] as DataTemplate;
}
_lastHeaderClicked = headerClicked;
}
をそしてListView.View
を使用して定義されている場合DisplayMemberBinding
ので、同じようにはうまく機能:私は今、いくつかの列を作る必要性を持っている
<!-- Name -->
<GridViewColumn Width="200"
DisplayMemberBinding="{Binding FullName}">
<GridViewColumn.Header>
<GridViewColumnHeader Content=" Name"
HorizontalContentAlignment="Left" />
</GridViewColumn.Header>
</GridViewColumn>
私はこのような何かを使用する必要がありますので、右揃えにしてください:
<!-- Name -->
<GridViewColumn Width="200">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding FullName}"
TextAlignment="Right" />
</DataTemplate>
</GridViewColumn.CellTemplate>
<GridViewColumn.Header>
<GridViewColumnHeader Content=" Name"
HorizontalContentAlignment="Left" />
</GridViewColumn.Header>
</GridViewColumn>
しかし、ソート手順(>>>でマークされた行)を参照するためのDisplayMemberBinding
がなくなりました。 CellTemplate
- >TextBlock
からバインディングを見つける方法はありますか?私はSnoopを使用してC#コードとXAMLコードの両方を掘り下げていますが、バインディングを見つけることができません。
私の最初のアイデアはうまくいかなかったので、添付された不動産のアイデアを完成させました。 –