You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Uno Platform桌面应用DataGrid模板列HyperlinkButton命令绑定问题

解决Uno Platform中DataGrid内HyperlinkButton绑定ViewModel命令的问题

问题根源在于DataGrid的CellTemplate内部,DataContext默认是GridData集合里的单个ChildFolder对象,而ChildFolder类并没有定义ChildItemInvokedCommand,所以直接绑定ChildItemInvokedCommand会找不到目标。

下面是两种可行的解决方法:


方法一:通过RelativeSource向上查找DataGrid的DataContext

修改HyperlinkButton的Command绑定,通过RelativeSource找到父级DataGrid的DataContext(也就是你的ViewModel):

<HyperlinkButton 
    Content="{Binding FolderName}" 
    IsDoubleTapEnabled="True" 
    CommandParameter="{Binding}" 
    Command="{Binding DataContext.ChildItemInvokedCommand, RelativeSource={RelativeSource AncestorType=controls:DataGrid}}" />

方法二:通过ElementName绑定Page的DataContext

先给Page添加x:Name属性:

<Page
    x:Class="MDTSStorageExplorer.Views.StorageAccountsPage"
    ...
    x:Name="RootPage">

然后修改HyperlinkButton的Command绑定:

<HyperlinkButton 
    Content="{Binding FolderName}" 
    IsDoubleTapEnabled="True" 
    CommandParameter="{Binding}" 
    Command="{Binding DataContext.ViewModel.ChildItemInvokedCommand, ElementName=RootPage}" />

验证说明

  • 你的CommandParameter="{Binding}"是正确的,会把当前点击的ChildFolder对象传递给命令的执行方法OnChildItemInvoked。
  • 确保ViewModel中的ChildItemInvokedCommand是public的(你的代码已经满足),且继承了正确的命令接口(IAsyncRelayCommand没问题)。

内容的提问来源于stack exchange,提问作者Sri Nivas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 01:45:38