我应该在哪里设置 DataContext - 代码隐藏或 xaml?

2023-12-22

(老实说,我搜索并阅读了所有似乎相关的“相关问题” - 我确实希望我没有“错过”其他地方的这个问题,但这里是......)

(至少)有两种不同的方法来设置 DataContext。可以使用 XAML,也可以使用隐藏代码。

什么是“最佳实践”?为什么?

我倾向于在 XAML 中设置它,因为它允许设计者自己定义集合,但我需要“弹药”来解释为什么它是最佳实践,或者为什么我很疯狂,而背后的代码是炸弹......


您可能会考虑的第三种方法是使用定位器服务。我通常有一个类负责创建我的所有 DataContext(在大多数情况下对我来说是 VM),并且我在 App.xaml 资源中创建该类的一个实例。然后,我在每个单独页面的 XAML 中绑定 DataContext。

i.e.

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

我应该在哪里设置 DataContext - 代码隐藏或 xaml? 的相关文章

  • 可编辑的 WPF 列表框

    我有一个绑定到 WPF 中的 ListBox 的 ObservableCollection 我希望列表框可编辑 并将编辑更改保存到集合中 由于 WPF 不提供可编辑的列表框 因此我尝试通过更改 ListBox ItemTemplate 创建
  • 我可以将 XAML/WPF 窗口复制到第二个窗口中,例如画中画电视吗?

    我有一个带有两个 XAML WPF 窗口 派生自 NavigationWindow 的应用程序 每个窗口都包含一个父 UserControl 其中放置了所有子控件 在其中一个窗口中 我想以画中画电视的方式显示第二个窗口的内容 实际上只是父
  • 多个组合框绑定到一个公共源,强制执行不同的选择

    我正在尝试将多个 ComboBox 绑定到一个公共源集合 并强制执行一旦进行 ComboBox 选择 该所选项目就有可能从其他 ComboBox 中删除 该集合是动态构建的 因此我是用代码来完成的 到目前为止 我已经尝试以多种方式实现这一点
  • WPF 每次打开和关闭窗口时都会增加内存

    我已经做了非常简单的测试 只是为了了解 wpf 如何与内存一起工作 我用一个窗口创建一个项目 其中有一个Button 第二个窗口完全是空的 当我按下Button单击打开第二个窗口 窗口 1 后面的代码
  • 在两个屏幕上拉伸 WPF 窗口

    我是 WPF 的初学者 我希望我的应用程序能够跨越两个具有相同分辨率的屏幕 我需要一个示例代码应用程序 因为我不知道从哪里开始 谢谢 The Screen课程将为您提供有关所有屏幕的信息 在之前没有实际做过的情况下 我会尝试以下操作 int
  • silverlight...使用相对路径的文件超链接按钮

    我正在尝试使用 silverlight 中的超链接按钮来使用户能够下载 Word 文档 我不在乎是否出现文件 另存为框或单词文档是否在新浏览器中打开 我收到错误 无法导航到相对于页面的位置 我已经看到它发布 您可以使用绝对路径 www do
  • 无法序列化 SolidColorBrush

    错误消息表明我无法序列化类 因为无法序列化 SolidColorBrush 该类具有 Brush 的公共属性 有解决办法吗 它更复杂 我尝试使用可以序列化的支持属性问题是我还需要冻结高光 这样我就可以在BackgroundWorker上创建
  • 绑定为资源

    我可以定义一个Binding as a Resource然后用不同的方式重复使用它Controls特性 Example Binding
  • WPF 双值数据与自定义小数分隔符绑定

    是否有一种集中方式让 WPF UI 遵守控制面板 gt 区域设置中设置的自定义小数分隔符 当我将双值数据绑定到文本框时 我想使用区域设置中设置的小数分隔符输入值 下面的代码 当放入应用程序的构造函数中时 将使用当前区域性设置的小数分隔符 但
  • 使 MahApps.Metro 中的 ProgressRing 更小

    看起来 MahApps Metro ProgressRing 控件默认的最小尺寸为 60x60 ProgressRing 有一个名为 IsLarge 的属性 但即使将其设置为 False 似乎也不会影响使 ProgressRing 小于 6
  • 是否可以通过容器/包装器在 WPF 表单中托管 WinForm 表单?

    有没有办法在 WPF 表单中的某种容器或包装类型控件中托管 显示完整的 WinForms 表单 而不仅仅是单个控件 我正在寻找与 html 中的 php 或 iframe 的虚拟包含概念类似的东西 可能通过将其编译成 OCX 或 DLL 来
  • 改变 Silverlight 应用程序的文化

    我目前正在开发 Silverlight 应用程序 我有一些数据网格 文本块 我使用标准绑定来显示值 其中一些是日期 例如
  • 如何在 XAML 中根据窗口或屏幕大小设置网格列最大宽度

    我的窗口中有一个 3 列网格 第一列上有一个 GridSplitter 我想将第一列的 MaxWidth 设置为父窗口或页面的三分之一Width or ActualWidth 并且如果可能的话我更愿意在 XAML 中执行此操作 这是一些在
  • WPF XAML 网格可见性触发器

    我的网格第一行有一条状态消息 我希望它在可见性发生变化时滑入和滑出 第一个可见性触发器效果很好 可以快速打开第一个网格行 一旦我添加 折叠 触发器 就什么都不起作用了 当可见性设置为折叠时 如何反转动画以滑动关闭
  • Grid 的 SharedSizeGroup 和 * 大小调整

    我有一个用户控件 调用它UserControl 它有一个带有以下列定义的网格
  • 具有参数化构造函数的 Wpf 用户控件

    我们正在使用 Microsoft Unity 和依赖项注入 因此我们为用户控件提供了参数化构造函数 如何使用 XAML 将此依赖项注入到用户控件中 我已在 XAML 中添加了用户控件 如下所示 xmlns usrRefundArrivalP
  • WPF 中的液体布局?

    Liquid布局在WPF中可行吗 当我们进行 Liquid 布局时 我们需要解决哪些顾虑 问题 Liquid 布局是否会调整文本字体大小 并且在图像变小和变大时也会调整图像宽度 是的 大多数容器 在 WPF 中称为面板 都支持液体布局 但使
  • 如何将用户控件的属性绑定到 WPF 中同一控件的属性?

    在我的用户控件中 我有一个收款电话解决方案 public List
  • 更换桌面壁纸/在桌面上绘制

    我想对我的 Windows 桌面进行一些自定义绘图 以便它看起来可以替换桌面背景 壁纸 我的第一次尝试是获得 DCdesktopListView并绘制它 IntPtr desktopDC GetWindowDC desktopListVie
  • ComboBox.SelectedValue 未从绑定源更新

    这是我的绑定源对象 Public Class MyListObject Private mylist As New ObservableCollection Of String Private selectedName As String

随机推荐

  • 如何使用Xamarin Android APK的.Net Reactor混淆dll

    我是 Xamarin Android 新手 我使用 Visual Studio 2015 社区版创建了一个应用程序 我已将解决方案配置设置为发布 为了进行混淆 我使用了 Net Reactor 这就是我试图混淆的方式 1 构建应用程序后 我
  • Common-Lisp 以函数格式打印制表符

    我希望打印制表符format功能 我可以通过以下方式实现这一点 C然后放置 tab作为格式的参数 但这似乎有点冗长 因为对于换行符 可以简单地放置一个 在字符串中 使用打印标签最常用的做法是什么format功能 感谢您的帮助 中没有制表符的
  • 在 CrossWalk 中迁移 Cordova 应用程序时出错

    我在尝试着迁移科尔多瓦应用程序 in 人行横道 using 命令行工具如中给出的this https crosswalk project org documentation cordova migrate an application ht
  • 在编译时计算一组常量表达式的最大值

    我试图在 Rust 过程宏 派生宏 内的编译时计算一组常量的最大值 该宏看起来像 fn get max len gt TokenStream Each TokenStream represents a constant expression
  • 有关 mod_rewrite 和 mod_redirect 的帮助

    我的 htaccess 文件是 Redirect 301 http domain com news articles dtMain start 150 http domain com news articles Redirect 301 h
  • 如何使用 pandas read_xml API 读取大型 xml 文件?

    我正在尝试读取一个大的 XML 文件 文件大小约为 84 GB 来自 Post xml 的堆栈溢出数据转储 我注意到有 Pandas API pandas read xml link https pandas pydata org pand
  • 为什么内存块没有被垃圾收集器清理?

    package main import fmt net http runtime func handler w http ResponseWriter r http Request largeMemAlloc make int 100000
  • 创建具有像单例模式一样的可重用性的 CSOM ClientContext

    我在不同的用户操作上调用了多种方法客户端上下文 在每个方法执行上创建它都会导致性能问题 所以我将其添加为静态变量以实现可重用性 性能平均提高了 5 秒 但随后在某些方法中它开始给出随机问题 版本冲突 on 执行查询 但如果我删除静态和空检查
  • 将 GoDaddy 裸域添加到 Heroku 应用程序

    Heroku 自定义域 https devcenter heroku com articles custom domains 我已经设置了two我的 Heroku 应用程序的自定义域 example com example com hero
  • 在 PyTorch 中实现“无限循环”数据集和数据加载器

    我想实现一个无限循环数据集和数据加载器 这是我尝试过的 class Infinite Dataset def len self return HPARAMS batch size return 1 lt lt 30 This causes
  • sprintf 代表什么?

    我尝试在谷歌和维基百科上查找 但找不到答案 有谁知道 sprintf 或 printf 代表什么 是某个东西的缩写吗 Thanks 字符串打印格式 ed IE 使用给定格式打印到字符串
  • 使用匿名类型集合填充 WPF 中的 DataGrid

    我正在使用匿名类型的集合填充数据网格 我正在设置DataGrid s DataContext财产 并且没有错误 数据网格中没有显示任何内容 我尝试对定义的对象集合进行相同的操作 但再次没有显示任何内容 请您指导我该怎么做 Thanks ED
  • 奇怪的“字符串索引超出范围:0”错误

    我有一个巨大的应用程序 在某些时候 当涉及重定向时 我收到了这个奇怪的错误 Caused by java lang StringIndexOutOfBoundsException with message String index out
  • 编写电子邮件嗅探器

    我有兴趣编写一个电子邮件嗅探器 将通过基于网络的客户端发送的所有电子邮件保存到高清 但我不知道如何做到这一点 如何在加密之前捕获 HTTPS 邮件 我真的很感激一些有用的信息 我在网上找不到任何信息 有一个名为 HTTP Analyzer
  • 是否有 shim 或 polyfill 可以解决 Chrome 对数据列表的 512 限制?

    使用绑定到数据列表的输入标签实现了预输入 当用户滚动浏览条目时 Chrome 不会显示第 512 个匹配项之外的任何条目 整个数据列表仅包含大约 950 个条目 使用适用于 Windows 的 Chrome 版本 76 0 3809 100
  • 在大表中查找半径MySQL(纬度经度)内的点的最快方法是什么

    目前我有几个包含 100k 行的表 我正在尝试查找如下数据 SELECT SQRT POW 69 1 latitude 49 1044302 2 POW 69 1 122 801094 longitude COS latitude 57 3
  • ng-click 和 ng-touch 移动设备

    我有一个用 AngularJS 编写的 cordova 移动应用程序 在我的应用程序中添加 ng touch 会使某些 html 行为无法正常工作 此问题的一个示例是 当复选框包装在附有 ng click 的 HTML 元素中时 该复选框不
  • 隐藏的表单元素是否被提交?

    如果 jQuery 的toggle 用于 div 包含表单元素 这些表单元素是否会随表单一起提交 即使它们是隐藏的 我的代码 尽管这个特定问题可能不需要 cms loop title click function ctg this attr
  • 使用 C 的原始 libcurl JSON PUT 请求

    我目前正在编写一个类似 REST 的客户端 只需要执行 PUT 请求 Problem 运行该程序并没有在 URL 的 API 上给出正确的结果 我不知道为什么 使用curl easy perform curl 在调用时不会抛出错误 但 UR
  • 我应该在哪里设置 DataContext - 代码隐藏或 xaml?

    老实说 我搜索并阅读了所有似乎相关的 相关问题 我确实希望我没有 错过 其他地方的这个问题 但这里是 至少 有两种不同的方法来设置 DataContext 可以使用 XAML 也可以使用隐藏代码 什么是 最佳实践 为什么 我倾向于在 XAM