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

如何在多个XAML文件中复用DataGridRowCopyAction类的RowCopyCommand命令?

解决XAML复用DataGridRowCopyCommand的问题

首先修正你的C#类代码,原代码存在语法错误且不符合XAML绑定要求:

方案一:使用静态属性(推荐全局复用)

将RowCopyCommand改为静态只读属性,无需实例化类即可直接在XAML中引用:

public class DataGridRowCopyAction
{
    // 静态属性,全局可访问
    public static ICommand RowCopyCommand { get; } = new DelegateCommand(RowCopyAction);

    // 对应静态方法,匹配DelegateCommand的委托签名
    private static void RowCopyAction()
    {
        // 实现行复制逻辑
    }
}

然后在XAML中用x:Static标记绑定静态属性:

xmlns:b="clr-namespace:x.y"
<!-- 绑定静态命令 -->
Command="{x:Static b:DataGridRowCopyAction.RowCopyCommand}"

方案二:实例化类作为资源

如果需要保留实例成员(比如后续扩展实例级逻辑),可将类实例化为XAML资源,再绑定实例属性:

1. 修正C#类为实例属性

public class DataGridRowCopyAction
{
    // 实例只读属性
    public ICommand RowCopyCommand { get; } = new DelegateCommand(RowCopyAction);

    private void RowCopyAction()
    {
        // 实现行复制逻辑
    }
}

2. 在XAML中添加资源并绑定

xmlns:b="clr-namespace:x.y"

<!-- 先在资源中实例化类 -->
<Window.Resources>
    <b:DataGridRowCopyAction x:Key="RowCopyActionInstance"/>
</Window.Resources>

<!-- 绑定资源实例的命令属性 -->
Command="{Binding RowCopyCommand, Source={StaticResource RowCopyActionInstance}}"

原代码失效的原因

  1. RowCopyCommand是字段而非属性:XAML绑定仅支持绑定带get访问器的属性,不支持直接绑定字段。
  2. 未正确指定绑定源:原XAML直接写Binding path=b:RowCopyCommand,既没有指定静态成员的引用方式,也没有提供实例对象作为绑定源。

内容的提问来源于stack exchange,提问作者Anu Hardin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:07:09