有没有办法将命令与WPF Toolkit DataGridHyperlinkColumn关联?
是否有任何方法可以将命令与DataGridHyperlinkColumn关联?我试过这个:有没有办法将命令与WPF Toolkit DataGridHyperlinkColumn关联?,wpf,datagrid,command,wpftoolkit,Wpf,Datagrid,Command,Wpftoolkit,是否有任何方法可以将命令与DataGridHyperlinkColumn关联?我试过这个: <DataGridHyperlinkColumn Header="Client Name" Binding="{Binding ShortName}"> <DataGridHyperlinkColumn.ElementStyle> <Style TargetType="TextBlock"> <Setter Propert
<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>
在运行时,我可以看到绑定的计算结果是正确的(调用了命令的属性getter),但是当我单击超链接时,命令没有执行。有更好的方法吗
谢谢
Daniel您确定该命令与超链接关联吗?我尝试在一个示例应用程序中设置此选项,但该命令与超链接没有关联(如果您从
CanExecute
返回false,您将能够快速确定它是否已连接)
相反,我创建了一个DataGridTemplateColumn
,以完成以下任务:
<DataGridTemplateColumn Header="Client Name">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock>
<Hyperlink Command="{Binding DataContext.NavigateToClientCommand, RelativeSource={RelativeSource AncestorType={x:Type local:ClientsSummaryView}}}"
CommandParameter="{Binding ShortName}">
<TextBlock Text="{Binding ShortName}" />
</Hyperlink>
</TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
如果必须创建多个列,这将变得非常烦人。使用Reflector打开工具包后,它似乎支持使用超链接的TargetName
/NavigationUrl
范例
如果您在很多地方需要这种类型的列,我建议扩展
DataGridHyperlinkColumn
并添加一个命令属性。然后,您可以修改从generateeelement
返回的元素,以便它使用您的命令。Abe:谢谢。我希望能在DataGridTemplateColumn周围找到快捷方式,但老实说,它看起来并没有比我的更糟。再次感谢!你能解释一下
的工作原理吗?它看起来非常复杂。@Dai-这是一个相对资源
绑定到添加此列的ClientsSummaryView
的DataContext
上的ICommand
属性。此问题询问了这些类型的绑定,希望能帮助您更好地理解: