gpt4 book ai didi

wpf - 有没有办法将命令与 WPF 工具包 DataGridHyperlinkColumn 相关联?

转载 作者:行者123 更新时间:2023-12-04 14:07:05 27 4
gpt4 key购买 nike

有什么方法可以将命令与 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com