繁体   English   中英

MultiBinding 列上的 WPF DisplayMemberBinding

[英]WPF DisplayMemberBinding on MultiBinding columns

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

当我有一个简单的绑定时,设置我的SortDescriptionPropertyName没有问题:

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

但是当我有一个 MultiBinding 时,有没有办法取第一个或第二个绑定路径的路径?

我的 XAML 是这样制作的:

<GridViewColumn Header="{x:Static p:Resources.Quantite}" Width="50">
    <GridViewColumn.CellTemplate>
        <DataTemplate>
            <WrapPanel>
                <TextBlock>
                    <TextBlock.Text>
                        <MultiBinding Converter="{StaticResource :displayQteSurQteTot}">
                            <Binding Path="Quantite" />
                            <Binding Path="TotalQuantity" />
                        </MultiBinding>
                    </TextBlock.Text>
                </TextBlock>
            </WrapPanel>
        </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>

但是,当我有一个MultiBinding ,有没有办法拿Path的第一或第二结合路径?

不是来自GridViewColumnHeader也不是来自GridViewColumn因为MultiBinding仅应用于CellTemplateTextBlock元素。

但是您可以创建一个附加属性并明确设置每列的路径:

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM