首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >通过标记扩展注入命令是一种好的做法吗?

通过标记扩展注入命令是一种好的做法吗?
EN

Stack Overflow用户
提问于 2012-01-30 08:13:03
回答 2查看 903关注 0票数 3

我有一个自定义的标记扩展,它使用依赖注入来解析命令。它对我来说非常方便,因为我不必在视图模型和绑定中为它们创建命令。最近有人告诉我,在mvvm中使用这样的标记扩展不是一个好的做法,我应该避免这种情况。这是真的吗?

标记扩展代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class InjectCommandExtension : MarkupExtension
{
    #region Props
    [ConstructorArgument("key")]
    public string Key { get; set; }
    #endregion

    #region ctor
    public InjectCommandExtension()
    {
    }

    public InjectCommandExtension(string key)
    {
        Key = key;
    }
    #endregion

    #region ProvideValue
    public override object ProvideValue(IServiceProvider serviceProvider)
    {
        if (Key == null)
            throw new ArgumentNullException("Key");

        return ServiceLocator.Current.GetInstance<ICommand>(Key);
    }
    #endregion
}

在XAML中使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<Button Content="Delete" Command="{mext:InjectCommand DeleteOrderCommand}"/>
EN

回答 2

Stack Overflow用户

发布于 2012-01-30 08:21:21

就我个人而言,如果我们以这种一般的方式谈论,就不会看到定制标记注入。我唯一能抱怨的就是你应该删除的复杂性。在XAML中将它们去掉,可以帮助您和组中的其他开发人员避免造成混乱。

祝好运。

票数 0
EN

Stack Overflow用户

发布于 2012-02-09 09:58:34

我会把它们保存在ViewModel中,这样你就可以测试命令了。MVVM的主要原因是UI的可测试性。应该限制XAML的UI行为、样式和逻辑(例如命令的执行),这些都应该在ViewModel中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9061015

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文