[英]WPF DisplayMemberBinding on MultiBinding columns
我有一个ListView
,我希望能够使用CollectionView
对它的任何列进行排序。
当我有一个简单的绑定时,设置我的SortDescription
的PropertyName
没有问题:
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
仅应用于CellTemplate
的TextBlock
元素。
但是您可以创建一个附加属性并明确设置每列的路径:
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.