有什么方法可以将命令与 DataGridHyperlinkColumn 相关联?我试过这个:
<DataGridHyperlinkColumn Header="Client Name" Binding="{Binding ShortName}">
<DataGridHyperlinkColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="Hyperlink.Command"
Value="{Binding DataContext.NavigateToClientCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:ClientsSummaryView}}}"/>
<Setter Property="Hyperlink.CommandParameter" Value="{Binding}"/>
</Style>
</DataGridHyperlinkColumn.ElementStyle>
</DataGridHyperlinkColumn>
在运行时,我可以看到绑定(bind)正在被正确评估(命令的属性 getter 被调用),但是当我单击超链接时命令没有执行。有一个更好的方法吗?
谢谢,
丹尼尔
最佳答案
是的,但不符合标准 DataGridHyperlinkColumn
.您需要稍微增强该类。
public class DataGridHyperlinkColumn : System.Windows.Controls.DataGridHyperlinkColumn
{
/// <summary>
/// Support binding the hyperlink to an ICommand rather than a Uri
/// </summary>
public BindingBase CommandBinding { get; set; }
protected override FrameworkElement GenerateElement(DataGridCell cell, object dataItem)
{
var result = base.GenerateElement(cell, dataItem);
if (((TextBlock)result).Inlines.FirstInline is Hyperlink link)
BindingOperations.SetBinding(link, Hyperlink.CommandProperty, CommandBinding);
return result;
}
}
设置正确的命名空间映射后,您可以执行以下操作:<c:DataGridHyperlinkColumn Header="Booking" Binding="{Binding Path=ReservationNo}" CommandBinding="{Binding Path=NavigateCommand}" />
这假设 NavigateCommand
存在于您的 View 模型对象上。
关于wpf - 有没有办法将命令与 WPF 工具包 DataGridHyperlinkColumn 相关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2654216/