在 WPF 中将窗口的 DataContext 绑定到窗口本身

2024-01-08

我有一个继承自 Window 的简单对话框窗口,我在 XAML 中设置它的 DataContext,如下所示:

<Window x:Class="MyProject.MyDialog"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        DataContext="{Binding RelativeSource={RelativeSource Self}}"
        ...>
    <StackPanel>
        <TextBox Text="{Binding SomeText}"/>
        ...
    </StackPanel>
</Window>

这是我显示此对话框的方式:

var dialog = new MyWindow();
MyWindow.SomeText = "some text";

if (dialog.ShowDialog() == true)
    ...

由于某种原因,当创建窗口并且没有绑定错误时,不会将文本框的初始文本设置为“某些文本”。

但是,如果我为 StackPanel 设置数据上下文而不是 Window:

<StackPanel DataContext="{Binding RelativeSource={RelativeSource AncestorType=Window}}">
    ...
</StackPanel>

一切都按预期进行。

这两者有什么区别?为什么第一种方法不起作用?


您需要在窗口中实现 INotifyPropertyChanged 才能使第一个案例正常工作。

窗口本身不会收到有关其属性(自身)发生更改的通知,因此不会设置 dc。

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

在 WPF 中将窗口的 DataContext 绑定到窗口本身 的相关文章

随机推荐

  • 接收到的 PowerShell 事件不按顺序排列

    这听起来像是一种合理的期望 即从一个线程触发的事件应该按照触发的顺序接收 然而 情况似乎并非如此 这是已知 记录的行为吗 是否有办法纠正它 下面是两个可立即运行的代码片段 它们显示了该问题 并在 Win7 和 Win10 下使用 PS v5
  • ListView距列表顶部的距离

    我有一个ListView 我想制作一个随列表滚动的背景 我看到了代码Shelves http code google com p shelves source browse trunk Shelves src org curiouscrea
  • 从vba中的write语句中删除双引号

    此代码将日志文件写入 LogFilePath 并生成如下输出 StarRange 和 EndRange 是一个变量 其值将从其他函数填充 Start postion A1 End position B100 Code Sub WriteLo
  • SVN:递归添加

    我正在尝试从我的工作副本中的 SVN 文件夹中添加新的项目文件 它询问选项 递归 并显示消息 您确定要添加 许多项目 有人可以指导我启用此 递归 选项有什么用吗 当我新添加新项目文件时我是否应该启用它 谢谢 简洁版本 svn add for
  • 如何用ggplot对齐两个图?

    我试图使用对齐两个图grid但没有成功 我尝试调整主题 使绘图边框 大小相同 但尽管使用相同的 y 坐标 但绘图并未对齐 对于下面的例子我可以使用annotation custom 网站上有一些示例 但这限制了我可以添加的文本数量 如有任何
  • Visual Studio 2015 无法启动

    我们已经在 Windows 7 上安装了 Visual Studio 2015 Professional 它运行良好 但是今天我们从菜单 工具 gt 扩展和更新 安装更新后 Visual Studio 不再启动 我们也尝试使用 以管理员身份
  • Asp .Net Core Web API 在哪里订阅 RabbitMQ

    我正在尝试使用 Web API 和 Rabbit MQ 消息代理来实现发布 订阅架构 我的解决方案中有两个项目 发布者和订阅者 发布正在成功实施 但我在我的网站中找不到位置 订阅者项目从队列中读取已发布的消息 我的两个项目都是 Net Co
  • 从 XML 数据反序列化数组(在 ServiceStack 中)

    我有以下 XML 数据块
  • 使用钩子检测 React 组件外部的点击

    我发现我正在跨应用程序重用行为 当用户单击元素外部时我可以隐藏它 随着钩子的引入 我是否可以将其放入钩子中并在组件之间共享 以节省我在每个组件中编写相同的逻辑 我已经在组件中实现了一次 如下所示 const Dropdown gt cons
  • Bootstrap 表 - 如何访问数据源对象中的内部元素

    假设我的数据源对象看起来像这样 id 123 name blabla1 kids id kid1 name kk1 id 456 name blabla2 kids id kid2 name kk2 这是一个包含 2 个对象的列表 数组 每
  • Java 9:在 Eclipse 中无法访问模块 java.xml.bind

    我将 Maven 项目迁移到Java 8 to a Java 9没有任何构建工具的项目Eclipse OxyGen 1a So my 模块信息 java看起来像这样 但是 java xml bind 无法访问 尽管它在我的模块路径中 那么这
  • 将基于 Java 的 API 与 Django 结合使用

    我正在使用 Django 创建一个网站 并希望将 Google Play 商店 Android Market 中的数据合并到其中 我考虑过手动抓取商店 但看起来这可能是一个缓慢而乏味的过程 所以我决定考虑其他选项 即一个名为android
  • 将 /var/run/docker.sock 挂载到容器中时,使用哪个文件系统进行卷挂载?

    我有一个容器 其中包含用于协调主机上微服务部署的逻辑 让我们将此服务称为deployer 为了实现这一目标 我安装了 var run docker sock文件从主机到那个deployer容器 所以 表演的时候docker run hell
  • Spring BeanPostProcessor 究竟是如何工作的?

    我正在学习 Spring Core 认证 我对 Spring 如何处理这些问题有一些疑问Bean 生命周期特别是关于Bean 后处理器 所以我有这个架构 我很清楚这意味着什么 以下步骤发生在加载 Bean 定义 phase The 配置类被
  • 如何在 Visual Studio 2008“Pro”中进行性能分析

    微软将这款软件称为 Visual Studio 2008 Professional 我发现其中似乎没有应用程序性能分析器或类似的东西 这使得它对我来说似乎不那么 专业 如果 Microsoft 不包含分析器 您有哪些第三方选项可以用于 Vi
  • 数据仓库中的时间和日期维度

    I m building a data warehouse Each fact has it s timestamp I need to create reports by day month quarter but by hours to
  • 如何分配线程来处理 Servlet 请求?

    有人可以解释一下什么是每个请求线程和每个连接线程吗 servlet 适用于哪种模型 如何分配线程来处理 HTTP 请求 是线程 请求还是连接 假设我想在我的计算机中执行一项耗时的任务Servlet s doGet 方法异步 我使用 Java
  • 无需预处理器即可扩展 C/C++ 函数宏

    如何在 C C 文件中测试 扩展所有函数宏 而不通过预处理器运行它 例如 是否有一个程序或方法可以改变这一点 include
  • PHP服务器ERR_CONNECTION_REFUSED

    我无法让 php 服务器在我的本地计算机上运行 我尝试使用 wampserver 和 Easy PHP 我检查了我的使用情况port 80 我更改了端口 80 to 8080 我给了 Apache 和 mysql 防火墙设置所需的权限 我做
  • 在 WPF 中将窗口的 DataContext 绑定到窗口本身

    我有一个继承自 Window 的简单对话框窗口 我在 XAML 中设置它的 DataContext 如下所示