如果在构造函数中设置 DataContext,在调用 InitializeComponent() 之前还是之后设置它有什么关系吗?

2023-12-30

我有一个 WPF 窗口,它在构造函数中接受一些参数。然后我使用这些构造函数来设置窗口的状态。该构造函数过程的一部分是实例化我的视图模型类,然后将其设置为窗口DataContext.

我的问题是我什么时候应该设置我的DataContext等于我的视图模型对象——在调用之前或之后InitializeComponent()?

我问是因为如果我事先设置它,那么我需要手动启动执行的代码after窗口已经初始化,因为某些事件应该在DataContext被分配或重新分配。

我的假设是,如果我设置了DataContext致电后InitializeComponent()但在最后决定以这种方式连接我的窗户之前,我想征求有关此事的建议。如果我设置了我的设置,我是否会错过一些可能会回来困扰我的东西DataContext致电后InitializeComponent()?


我的问题是何时应该将 DataContext 设置为等于视图模型对象——在调用 InitializeComponent() 之前还是之后?

除非您依赖于在调用 InitializeComponent() 期间建立的某些绑定,否则这应该不重要,例如ElementName绑定:

无法将 ItemsSource 绑定到 ElementName https://stackoverflow.com/questions/42006829/cannot-bind-itemssource-to-elementname/42007019#42007019

The InitializeComponent()方法本身定位已编译的 XAML 文件的 URI 并将其传递给LoadComponent()解析 BAML(即编译的 XAML)并创建您在 XAML 标记中定义的元素的实例的方法:

.xaml 和 .xaml.cs 文件之间有什么联系 https://stackoverflow.com/questions/41344321/what-is-the-connection-between-xaml-and-xaml-cs-files/41345998#41345998

只需设置DataContext将窗口属性绑定到视图模型类的实例(视图中的元素绑定到该实例)也可以在调用InitializeComponent()方法。无论如何,这些绑定在构造函数返回之前都不会解析。

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

如果在构造函数中设置 DataContext,在调用 InitializeComponent() 之前还是之后设置它有什么关系吗? 的相关文章

  • IdentityServer 4 对它的工作原理感到困惑

    我阅读和观看了很多有关 Identity Server 4 的内容 但我仍然对它有点困惑 因为似乎有很多移动部件 我现在明白这是一个单独的项目 它处理用户身份验证 我仍然不明白的是用户如何注册它 谁存储用户名 密码 我打算进行此设置 Rea
  • 如何在C(Linux)中的while循环中准确地睡眠?

    在 C 代码 Linux 操作系统 中 我需要在 while 循环内准确地休眠 比如说 10000 微秒 1000 次 我尝试过usleep nanosleep select pselect和其他一些方法 但没有成功 一旦大约 50 次 它
  • 从同一个类中的另一个构造函数调用构造函数

    我有一个带有两个构造函数的类 C 这是代码片段 public class FooBar public FooBar string s constructor 1 some functionality public FooBar int i
  • 查看 NuGet 包依赖关系层次结构

    有没有一种方法 文本或图形 来查看 NuGet 包之间的依赖关系层次结构 如果您使用的是新的 csproj 您可以在此处获取所有依赖项 在项目构建后 项目目录 obj project assets json
  • 使用可变参数包类型扩展的 C++ 函数调用者包装器

    我绑定了一些 API 并且绑定了一些函数签名 如下所示 static bool WrapperFunction JSContext cx unsigned argc JS Value vp 我尝试将对象和函数包装在 SpiderMonkey
  • 对 std::vector 进行排序但忽略某个数字

    我有一个std vector
  • Python 属性和 Swig

    我正在尝试使用 swig 为一些 C 代码创建 python 绑定 我似乎遇到了一个问题 试图从我拥有的一些访问器函数创建 python 属性 方法如下 class Player public void entity Entity enti
  • File.AppendText 尝试写入错误的位置

    我有一个 C 控制台应用程序 它作为 Windows 任务计划程序中的计划任务运行 此控制台应用程序写入日志文件 该日志文件在调试模式下运行时会创建并写入应用程序文件夹本身内的文件 但是 当它在任务计划程序中运行时 它会抛出一个错误 指出访
  • 为什么可以通过ref参数修改readonly字段?

    考虑 class Foo private readonly string value public Foo Bar ref value private void Bar ref string value value hello world
  • 识别 Visual Studio 中的重载运算符 (c++)

    有没有办法使用 Visual Studio 快速直观地识别 C 中的重载运算符 在我看来 C 中的一大问题是不知道您正在使用的运算符是否已重载 Visual Studio 或某些第三方工具中是否有某些功能可以自动突出显示重载运算符或对重载运
  • 如何在 C 中安全地声明 16 位字符串文字?

    我知道已经有一个标准方法 前缀为L wchar t test literal L Test 问题是wchar t不保证是16位 但是对于我的项目 我需要16位wchar t 我还想避免通过的要求 fshort wchar 那么 C 不是 C
  • 为什么这个二维指针表示法有效,而另一个则无效[重复]

    这个问题在这里已经有答案了 这里我编写了一段代码来打印 3x3 矩阵的对角线值之和 这里我必须将矩阵传递给函数 矩阵被传递给指针数组 代码可以工作 但问题是我必须编写参数的方式如下 int mat 3 以下导致程序崩溃 int mat 3
  • C++ int 前面加 0 会改变整个值

    我有一个非常奇怪的问题 如果我像这样声明一个 int int time 0110 然后将其显示到控制台返回的值为72 但是当我删除前面的 0 时int time 110 然后控制台显示110正如预期的那样 我想知道两件事 首先 为什么它在
  • 检测到严重错误 c0000374 - C++ dll 将已分配内存的指针返回到 C#

    我有一个 c dll 它为我的主 c 应用程序提供一些功能 在这里 我尝试读取一个文件 将其加载到内存 然后返回一些信息 例如加载数据的指针和内存块的计数到 c Dll 成功将文件读取到内存 但在返回主应用程序时 程序由于堆损坏而崩溃 检测
  • Unity:通过拦截将两个接口注册为一个单例

    我有一个实现两个接口的类 我想对该类的方法应用拦截 我正在遵循中的建议Unity 将两个接口注册为一个单例 https stackoverflow com questions 1394650 unity register two inter
  • C++ new * char 不为空

    我有一个问题 我在 ASIO 中开发服务器 数据包采用尖头字符 当我创建新字符时 例如char buffer new char 128 我必须手动将其清理为空 By for int i 0 i lt 128 i buffer i 0x00
  • 将数组作为参数传递

    如果我们修改作为方法内参数传递的数组的内容 则修改是在参数的副本而不是原始参数上完成的 因此结果不可见 当我们调用具有引用类型参数的方法时 会发生什么过程 这是我想问的代码示例 using System namespace Value Re
  • 使用 omp_set_num_threads() 将线程数设置为 2,但 omp_get_num_threads() 返回 1

    我有以下使用 OpenMP 的 C C 代码 int nProcessors omp get max threads if argv 4 NULL printf argv 4 s n argv 4 nProcessors atoi argv
  • 不区分大小写的字符串比较 C++ [重复]

    这个问题在这里已经有答案了 我知道有一些方法可以进行忽略大小写的比较 其中涉及遍历字符串或一个good one https stackoverflow com questions 11635 case insensitive string
  • OpenCV SIFT 描述符关键点半径

    我正在深入研究OpenCV的SIFT描述符提取的实现 https github com Itseez opencv blob master modules nonfree src sift cpp 我发现了一些令人费解的代码来获取兴趣点邻域

随机推荐

  • 在运行时更改 log4net 转换模式或布局

    我正在使用 LogInfo 方法来记录到滚动平面文件 但在某种情况下调用它时 我需要临时更改转换模式或模式布局 无论您想如何称呼它 这可能吗 是的 例如这样 var appenders log4net LogManager GetRepos
  • Apache 2.4 无法在 Mac OS 10.8 上加载 php5.5

    我正在尝试在装有 Mac Os 10 8 5 的 Mini Mac 中使用 Apache 2 4 7 和 php5 5 Apache 2 4 7 按照以下说明安装here http mac dev env patrickbougie com
  • DPDK pdump 无法热插拔添加设备

    我正在尝试使用 dpdk pdump 从 dpdk 控制下的 NIC 捕获 tx 数据包 Setup DPDK 18 11 4 In config common base CONFIG RTE LIBRTE PMD PCAP y and C
  • 如何在 ASP.NET MVC 中以 BDD 风格进行单元和集成测试?

    我正在学习使用 ASP NET MVC 进行行为驱动开发 并且基于a post http blog stevensanderson com 2010 03 03 behavior driven development bdd with sp
  • OpenShift V3 的 DNS 条目

    我最近购买了一个域名 并尝试将此域名重定向到 OpenShift v3 Web 应用程序 这是我第一次设置这样的东西 所以请容忍我的无知 通常 OpenShift 提供一个主机名 类似于 myapp myproject preview op
  • 使用 facebook like 按钮时,评论弹出窗口消失,并出现“确认”按钮

    我试图在我的 WordPress 博客中包含一个类似 facebook 的按钮 并带有相应的 opengraph 标签来显示图像 描述等 当我测试它时 喜欢和不喜欢很多来检查结果 在单击喜欢按钮后 弹出的评论闪烁 然后突然出现一个 确认 链
  • Ionic 无法打开 Cors

    我正在尝试从 ionic android 应用程序中的实时服务器获取 API 数据 但它返回此错误 Access to XMLHttpRequest at https example com api categories from orig
  • Make 中的默认规则

    make 中是否有一种机制允许在任何地方使用默认的全局隐式规则 类似于内置规则 Make 提供了一些用于编译 C C Fortran 文件的内置隐式规则 甚至不需要Makefile对于简单的情况 然而 当编译其他语言 例如Go编程语言文件
  • 如何使用spaCy进行文本预处理?

    如何使用 python 在 spaCy 中执行预处理步骤 例如停用词删除 标点符号删除 词干提取和词形还原 我在 csv 文件中有文本数据 如段落和句子 我想做文本清理 请举例说明在 pandas 数据框中加载 csv 这可能有帮助 imp
  • 在多个提升组件之间共享服务

    我创建了两个单独提升的组件 在两个不同的视图中 并且我尝试在这两个组件之间共享一个独特的服务 单例 该服务用于操作这些组件之一 我的服务 Injectable export class ModalContainerService priva
  • 不允许 Nuget 和 Teamcity Agent 运行此配置

    我遇到了一个有趣的问题 我想使用 Teamcity 构建 nuget 包 我确实设置了非常简单的配置 干得好 JetBrains 但是我无法在我们的构建代理之一上运行它 该代理确实通过了配置的代理要求 但在其名称旁边显示以下内容 不允许运行
  • 如何在 IDEA 中从 Gradle 设置 checkstyle 配置

    我在 IDEA 中使用 Checkstyle 插件 我想为不同的模块设置不同的 checkstyle 配置 我使用 gradle 作为构建工具 版本 4 我想编写一个修改模块相应 iml 文件的任务 知道怎么做吗 我第一次尝试修改iml文件
  • 如何水平对齐跨度文本和输入元素

    我正在努力创建一个搜索表单 在这个搜索表单中 我使用了
  • CMake Eclipse 构建配置

    我想使用 CMake 生成 Eclipse CDT 项目 其中生成的 Eclipse 项目包含定义的构建类型作为 IDE 中的可选构建配置 例如 if CMAKE CONFIGURATION TYPES set CMAKE CONFIGUR
  • Networkx:使用公共函数进行边权重计算

    假设我有一个函数euc 2d graph n1 n2 计算同一图的两个节点之间的欧几里德距离 每个节点都有一个给定的pos x y 这是在图创建时分配的 NetworkX 提供了一个函数来获取图的所有边的总权重 即graph size we
  • 如何返回带有捕获的 unique_ptr 的 lambda [重复]

    这个问题在这里已经有答案了 使用这个 https stackoverflow com a 16968463 629530 https stackoverflow com a 16968463 629530 我可以在 lambda 中捕获 u
  • 密码自动完成功能不适用于我的网络应用程序(在 Firefox 中)

    我已经用 HTML 创建了一个登录提交表单 但由于某种原因 自动完成功能在 Firefox 中不起作用 这是 Firefox 中发生的情况 我提供用户名和密码 然后单击登录按钮 Firefox 会提示我是否要记住密码 我按 记住 并登录即可
  • Vagrant 来测试厨师食谱 - 但如何处理私人 git

    我使用 vagrant 来测试我的厨师食谱 问题是我已经克隆了我的私人存储库并且机器没有被认证 我如何自动对 boostrap Chef 进行 git 身份验证 我正在使用 vagrant ubuntu 11 10 with Chef Th
  • throw new TypeError('OAuth2Strategy 需要 clientID 选项'); }

    这是出现的错误 该怎么办 我创建了一个 socket io 聊天应用程序 这是一个使用 nodejs socket io 和 package json 的聊天应用程序 包 json dependencies body parser 1 15
  • 如果在构造函数中设置 DataContext,在调用 InitializeComponent() 之前还是之后设置它有什么关系吗?

    我有一个 WPF 窗口 它在构造函数中接受一些参数 然后我使用这些构造函数来设置窗口的状态 该构造函数过程的一部分是实例化我的视图模型类 然后将其设置为窗口DataContext 我的问题是我什么时候应该设置我的DataContext等于我