与 WPF 和数据绑定一起使用的简单 CRUD

2024-03-29

我是用于 Windows 应用程序开发的 WPF 新手,只是想先将其介绍一下。我正在使用 Visual Studio 2010 和 .NET Framework 4.0。

我正在开发一个相当简单的管理工具。为了简单起见,假设我正在处理员工数据。我创建了一个名为 UserDetail 的小型 UserControl,其中包含与 Employee 类相关的所有字段。

在我的 UserDetail 上绑定输入控件的最简单方法是什么?创建新实例时可能会出现空白屏幕,或者编辑现有实例时可能会出现现有值。

我在构造函数中尝试了以下操作:

DataContext = _employee;

我在 XAML 中绑定了这样的控件:

<TextBox Name="txtFirstName" Text="{Binding FirstName}"/>

这可行,但似乎不是正确的方法。这似乎是一个简单的例子,但我还没有发现任何有用的东西。

对于这种简单的绑定有任何建议或教程链接吗?


就像乔尔说的那样,你走在正确的道路上。在某些时候,您需要在后面的代码中显式设置 DataContext。这通常在顶层完成 - 就像在您的 Window 类中 - 并且所有进一步的 DataContext 都应该通过 DataBindings 设置。

对于您的具体示例,您说您正在开发用户控件。您应该能够直接在使用该控件的地方绑定 UserDetails 控件的 DataContext,因此您不需要在 UserControl 的后面代码中设置 DataContext。至少通常情况下,用户控件的用户会告诉用户控件要使用哪些数据。

假设您有一个 AllEmployees 类,其属性为 SelectedEmployee。您可以在后面的代码中将此对象的实例设置为窗口上的 DataContext。现在您希望窗口显示 SelectedEmployee 的用户详细信息。 UserDetails 控件是在假设它有一个绑定到其 DataContext 的 Employee 对象的情况下构建的,现在您可以通过在 DataBinding 中设置该对象来确保它有一个 Employee 对象:

<Window xmlns:local="YourNamespaceHoldingTheUserDetailsControl>
    ..
    <local:UserDetails DataContext={Binding SelectedEmployee} />
    ..
</Window>   

您还可以将 Employee 属性添加到 UserDetails 类中,该属性将设置 DataContext - 如果您认为这在绑定中看起来更好。

为了改善 GUI 和领域模型之间的分离,你绝对应该了解MVVM 模式 http://en.wikipedia.org/wiki/Model_View_ViewModel。我最初是通过观看了解到的这个视频 http://www.lab49.com/files/videos/Jason%20Dolinger%20MVVM.wmv杰森·多林格 (Jason Dollinger) 写过几次。该视频将教您许多有关 WPF 的有用知识。这个问题 https://stackoverflow.com/questions/1405739/mvvm-tutorial-from-start-to-finish似乎也有一些关于该主题的有价值的链接。

祝学习 WPF 顺利!它与其他 GUI 框架有点不同,因此学习曲线可能有点陡峭。但一旦你进入其中,这就是一个美妙的地方!

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

与 WPF 和数据绑定一起使用的简单 CRUD 的相关文章

随机推荐

  • 创建和管理 Whatsapp Web JS 的多个实例

    我的文件中有一个类whatsappWebSession import Client LocalAuth from whatsapp web js class WhatsappWebSession constructor callback r
  • 如何解决 Visual Studio 中的长时间构建问题?

    是否可以以任何方式对 Visual Studio 中的构建过程进行故障排除 我想看看构建的哪一部分具体花费了这么多时间 Tools Options Project and Solutions Build and Run MSBuild 输出
  • 如何在UIView中绘制多个不同颜色的UIBezierPath

    我想在 UIView 中绘制多个具有不同描边和填充颜色的 UIBezierPath 这是代码 void drawRect CGRect rect context UIGraphicsGetCurrentContext UIColor gra
  • 在主干视图中访问el外部的点击事件

    我如何访问外部的点击事件el scope 我拥有的 HTML div class right btn div div div
  • 如何在 GCP 中执行数据沿袭? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 当我们使用GCP云存储实现数据湖 并使用Dataproc Dataflow等云服务进行数据处理时 我们如何在GCP中生成数据沿袭报告
  • 为什么 ERD 中不允许使用特定基数?

    在有关实体关系图的每个教程中 我都读到不允许为关系指定固定基数 只有对 ERD 的非正式评论才能澄清飞行员的数量exactly 2 因此 例如 航班和飞行员之间的关系 其中每个航班恰好有 2 名飞行员 必须表示为
  • 将 ValidationRules 绑定在一行中?

    我已经编写了几个单行绑定 如果可能并且仍然是人类可读的 我希望保持这种方式 有什么办法可以重写这个
  • Fork-Join 相关: join() vs get() vs invoke()

    我有必要使用吗join with fork 或者我也可以使用其中之一join get invoke 我检查了API http docs oracle com javase 7 docs api java util concurrent Fo
  • AutoMapper 具有来自 IDataReader 的列表数据

    using IDataReader dr DatabaseContext ExecuteReader command if dr Read AutoMapper Mapper CreateMap
  • 在 PHP 中通过用户 标签将一个页面链接到另一个页面

    这是我的海报代码在一页中 a href img href a 现在我想将其链接到另一个页面假设我单击 说 以获取 href mydomain com 1 它将重定向到另一个页面并播放该文件 该页面的代码是 if playlistitem l
  • RESTKit - 将大量对象发布到服务器

    如何使用 RESTKit 将对象数组发布到我的服务器 我有一个名为的自定义对象Contact它有一些属性 例如name phone等等 我想发送这些的数组Contact向服务器发送对象 我知道的方法是postObject path para
  • 在 swift 4 中自动关闭视图控制器

    假设我有 3 个ViewControllers标记为 A B 和 C 现在 A 是rootViewController窗口的形状 它以模态方式呈现 B 当点击 B 中的按钮时 应该立即以模态方式呈现 C 并自动关闭 B 我怎样才能做到这一点
  • 使用 pyqtgraph 有效地绘制大型数据集

    我正在尝试使用 pyqtgraph 生成散点图和直方图矩阵 每个散点图的输入 x 和 y 值 是长度大于 1 000 000 的 numpy 数组 生成这些图需要很长时间 2x2 绘图矩阵 gt 1 分钟 matplotlib 实际上生成相
  • ModuleNotFoundError:使用tensorflow 2.6时没有名为“keras”的模块

    我创建了一个新的 conda 环境 conda create name tf tensorflow 2 6 并尝试编译 import tensorflow as tf model tf keras models Sequential 导致
  • 如何设置组合框宽度以适合最大的项目

    我希望我的ComboBox必须适应其width到最长的String Item我的清单中 代码示例 ComboBox model Banana Apple ThisIsTheLongestWordThatIHave Coconut 知道如何做
  • Android 中写入锁定文件

    我将一些数据存储在 SD 卡上的文件上 并从不同的线程读取相同的文件 为了避免读取和写入的竞争条件 我想在两种情况下锁定文件 读取和写入 我心里有两个选择 1 我可以使用同步来做到这一点 2 我可以使用文件锁来做到这一点 我应该选择哪一个
  • 批量插入 mysql - 我可以使用忽略子句吗?有限制吗?批量插入的记录?

    我有一堆数据想要插入 我决定对 mysql 使用批量插入 插入朋友 请求者 好友 值 value1 value2 value2 value1 value3 value4 value4 value3 我想了解以下信息 1 我可以使用忽略吗 例
  • Json允许错误

    这个错误在我们的 MVC 应用程序中随机出现 有时做同样的事情不会 有时却会 有谁知道这是否与任何可以简单解决的问题有关 或者这是否是你们很多人都见过的常见现象 System InvalidOperationException This r
  • 注册 COM 互操作

    当选中构建属性中的 Register for COM Interop 选项时 出现错误 无法注册程序集访问 被拒绝 取消选中该选项时 项目构建时不会出现任何错误 但我的要求是注册 COM 对象 因为我需要在 VB 中使用相同的对象 谁能帮我
  • 与 WPF 和数据绑定一起使用的简单 CRUD

    我是用于 Windows 应用程序开发的 WPF 新手 只是想先将其介绍一下 我正在使用 Visual Studio 2010 和 NET Framework 4 0 我正在开发一个相当简单的管理工具 为了简单起见 假设我正在处理员工数据