是否可以将数据绑定到扩展方法?

2024-01-06

缺乏关于该主题的问题可能表明这里有代码味道,但是......是否可以为类编写扩展方法并像属性一样对其进行数据绑定?

假设我提供了一个无法从根本上更改的类结构,但我想将其一系列布尔属性表示为字符串以用于显示目的。

简化的基类:

public class Transmission
{
    public int ID { get; set; }
    public bool Cancelled { get; set; }
    public bool Stored { get; set; }
    public bool Recorded { get; set; }
}

我的扩展方法:

public static class Extensions
{
    public static string Status(this Transmission trans)
    {
        StringBuilder sb = new StringBuilder("|");
        if (trans.Cancelled)
            sb.Append("| Cancelled ");
        if (trans.Recorded)
            sb.Append("| Recorded ");
        if (trans.Stored)
            sb.Append("| Stored ");
        sb.Append("||");

        return sb.ToString();
    }
}

为了进一步增加复杂性,我正在传递这些内容的列表,并且我正在尝试绑定到数据网格(XAML 经验非常有限)。

<GroupBox Header="Here is an amazing list of results for you to violate horribly.">
    <DataGrid ItemsSource="{Binding Transmissions, Mode=OneWay}" AutoGenerateColumns="False">
         <DataGrid.Columns>
            <DataGridTextColumn Width="*" Header="Local ID" Binding="{Binding ID, Mode=OneWay}"/>
            <DataGridTextColumn Width="*" Header="Status" Binding="{Binding Status, Mode=OneWay}"/>
         </DataGrid.Columns>
    </DataGrid>
</GroupBox>

我已经测试了代码并且能够毫无困难地绑定到 ID。然而,“状态”根本没有被获取。绑定到扩展属性有什么技巧吗?或者只编写一个装饰器/外观类并绑定到它会更谨慎吗?


这就是您通常使用的模式,例如MVVM为了。您将属性添加到视图模型它们基于模型并且仅与视图相关。视图模型可以包含对模型的引用,以直接绑定到其属性或将它们镜像到视图模型上(为了解耦,我会选择后者)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以将数据绑定到扩展方法? 的相关文章

随机推荐

  • 如何使用 Kotlin 反射更改成员字段?

    我正在将一个类从 Java 移植到 Kotlin 这个类声明了数百个对象 每个对象都有一个 name 属性 该属性与该对象声明的变量名称相同 Java反射允许通过反射使用声明的名称来设置对象成员name 只是在数百个构造函数中保存一个参数
  • “JScript - 脚本块”和内存泄漏 - 如何正确释放资源?

    我在项目的部分视图中放置了一些 jquery 选项卡 我通过 Visual Studio 的 解决方案资源管理器 注意到 在调试期间新动态JScript script block每次我单击新选项卡时都会生成 即使我把这种情况发生 mytab
  • 视图正在剪切其内容错误

    我使用的是 Xcode 4 6 在窗口中 我不断收到 视图正在裁剪其内容 错误 当我单击它时 XIB 编辑器会突出显示一个标签 这个错误试图告诉我什么以及如何修复它 首先 单击文本 视图正在裁剪 将选择有问题的控件 当您将文本字段的大小调整
  • Javascript 通过类或 id 获取 DOM 数组中的元素索引位置

    我的情况 var domElements document body getElementsByTagName 现在我想返回数组项键 数组中元素的位置 例如domElements 34 在数组中搜索元素id asd 我怎样才能实现这个目标
  • 将 Ehcache CacheManager (v 3.x) 转换为 Spring CacheManager,无需 XML 配置

    我正在尝试在我的应用程序中使用 Ehcache 管理器 我想在没有 xml 配置的情况下设置它 我有下一个依赖项
  • 头文件的多次包含[重复]

    这个问题在这里已经有答案了 I have A cpp and B cpp两者都包含头文件header h 后来两者A cpp and B cpp包含在一个main cpp 这会导致错误 当main cpp编译时说头文件header h已被收
  • python 用高斯混合模型(GMM)拟合加权数据,协方差最小

    我想使用 python 将高斯混合模型拟合到一组加权数据点 我尝试了 sklearn mixture GMM 它工作得很好 除了它对所有数据点的权重相等 有谁知道如何在此方法中为数据点分配权重 我多次尝试使用数据点来 增加其权重 但这对于大
  • 如何将源代码嵌入到 pdb 中并让调试器使用它?

    NOTE 我的目标关注点是 C 以常规 MSIL 为目标的 CLR 以防有一些东西适用于此 但不适用于更一般的情况 我读过这篇文章并想总结一下我的理解以便清楚起见 如今 调试器使用 PDB 来获取文件的磁盘路径以及编译后创建可执行文件的给定
  • 使用带有圆形文本框的图标 Bootstrap 4 搜索输入

    我想要带有搜索图标的圆形边框搜索框 下面的代码有效 但如果我将其分类为 rounded pill 则图标将与文本框分开 如何使文本框变圆 同时图标也保留在其中
  • R - 条件滞后 - 如何滞后一定数量的单元格直到满足条件?

    几周来一直试图解决这个问题 但似乎无法解决 我有以下数据框 post id user id 1 post 1 user1 2 post 2 user2 3 comment 1 user1 4 comment 2 user3 5 commen
  • 无法在 PayPal HTMLButton 上指定每个付款请求的“金额”

    我正在尝试使用 HTML 按钮 方法与 PayPal 集成 结帐流程相当简单 用户点击 立即购买 gt 转入 PayPal gt 付款处理 gt 返回网站 根据客户想要 立即购买 的商品 提交的表单中的 金额 会有所不同 并且我无法让 Pa
  • 如何使用 MVC Web Api 内容服务器和 Android 最终用户 apk 实现 OWIN 身份验证服务器

    我正在尝试实施 用于按需返回内容的 MVC Web API 服务器 REST 服务器 中央身份验证 OAuth 2 0 服务器 例如 OWIN Android 最终用户端应用程序 场景是这样的 Android应用程序在REST服务器上请求内
  • 使用 node.js 在 Azure 文件存储中上传文件

    我们正在尝试创建一个 Web 服务 以使用 node js 服务将文件上传到 Azure 文件存储 下面是node js服务器代码 exports post function request response var shareName r
  • 为什么 PRIVATE 成员函数不能成为另一个类的友元函数?

    class x void xx class y friend void x xx 这会导致类似的错误 错误 友元函数 xx 是 x 的私有成员 为什么我不能将私有成员函数声明为另一个类的友元 同学 朋友 9 http eel is c dr
  • iOS AppStore 上的 CCATS 和加密

    这将是一个很长的问题 实际上是一组相关的问题 我想制作一个 iOS 应用程序 将在 Apple 的 App Store 上出售 显然 我的应用程序将在文档目录中存储一些敏感的用户数据 出于安全原因 我想到了一种可以保护该数据的加密系统 有趣
  • 所得税计算的编程逻辑

    谁能帮我为我们的办公室员工工资税表创建 PHP 或 mysql 代码 这是我们税收监管的基础 If salary is gt 0 and lt 150 it will be 0 Nill If salary is gt 151 and lt
  • 删除完整磁盘上最旧的文件

    一个以 100MB 块将数据写入磁盘并通过附加 1 来增加文件名的应用程序 因此n1 n2 n1000 这最终会使用分区 Linux 主机 上的所有可用空间 我正在寻找一种方法来删除该系列中首次写入的文件 直到驱动器空间达到特定利用率 如果
  • 从窗口类名获取窗口句柄

    我试图在我的进程中获取子窗口的窗口句柄 我拥有的唯一信息是窗口类名称 我可以使用任何 win32 函数吗 我是用 C 做的 更详细一点 这是一个 Visual Studio 插件 用 C 编写 所以我的流程是 Visual Studio 它
  • 如何在PHP中通过计算总和来显示数据库中数量最多的酒店名称?

    我是 PHP 编码新手 我想根据用户从复选框中选择的偏好的相应计数 以升序显示数据库中的酒店名称 我的代码根据用户输入的偏好显示酒店名称 其逻辑是 如果数据库中针对该酒店的首选项名称下存在 1 则显示酒店名称 例如 如果用户从 7 个复选框
  • 是否可以将数据绑定到扩展方法?

    缺乏关于该主题的问题可能表明这里有代码味道 但是 是否可以为类编写扩展方法并像属性一样对其进行数据绑定 假设我提供了一个无法从根本上更改的类结构 但我想将其一系列布尔属性表示为字符串以用于显示目的 简化的基类 public class Tr