在MultiBinding列上的WPF DisplayMemberBinding

时间:2019-04-15 17:33:23

标签: c# wpf sorting

我有一个ListView,并且我希望能够使用CollectionView对它的任何列进行排序。

当我有一个简单的绑定时,设置PropertyName的{​​{1}}不会遇到问题:

SortDescription

但是当我有MultiBinding时,是否可以采用第一个或第二个绑定路径的Path?

我的XAML是这样制作的:

header = ((System.Windows.Data.Binding)headerClicked.Column.DisplayMemberBinding).Path.Path;

1 个答案:

答案 0 :(得分:1)

  

但是当我有MultiBinding时,是否可以采用第一个或第二个绑定路径的Path

由于GridViewColumnHeader仅应用于GridViewColumn中的MultiBinding元素,因此不是来自TextBlockCellTemplate

但是您可以创建一个附加属性并为每个列显式设置路径:

public class GridViewColumnExtensions
{
    public static readonly DependencyProperty PathProperty = DependencyProperty.RegisterAttached(
        "Path",
        typeof(string),
        typeof(GridViewColumnExtensions),
        new FrameworkPropertyMetadata(null)
    );

    public static void SetPath(GridViewColumn element, string value)
    {
        element.SetValue(PathProperty, value);
    }

    public static string GetPath(GridViewColumn element)
    {
        return (string)element.GetValue(PathProperty);
    }
}

XAML:

<GridViewColumn Header="{x:Static p:Resources.Quantite}" Width="50" local:GridViewColumnExtensions.Path="test">

用法:

string header = GridViewColumnExtensions.GetPath(headerClicked.Column);