绑定不适用于动态加载的 xaml

2024-04-20

我在用着XamlReader成功加载 xaml 文件并创建FrameworkElement跟...共事。

我正在加载的 xaml 中包含绑定表达式,例如:

<TextBlock Text="{Binding DataContextTextProperty}" />

如果我放置 FrameworkElement 我会从XamlReader.Load()在 WPF 窗口中,绑定一切正常。

但是,在这种情况下我使用Laurent Bugnion 关于从 WPF/XAML 创建 PNG 的优秀文章 http://geekswithblogs.net/lbugnion/archive/2008/10/10/converting-and-customizing-xaml-to-png-with-server-side-wpf.aspx。由于结果XamlReader.Load()通过 a 直接写入 PNGVisualBrush,似乎绕过了 WPF 调用绑定表达式的必要机制。

这让我相信实际的绑定并不是通过调用来真正被调用的XamlReader.Load(),或者它们不起作用,因为我不知道与没有可视化树有关的事情,直到您添加FrameworkElement到现有的视觉树或其他东西。

我可以做些什么来确保调用这些绑定吗?

提前谢谢了。


我修好了它!!

咳咳,请允许我解释一下……

我现在不知道我是如何做到这一点的,但我在 MSDN 上找到了一篇听起来很有帮助的文章,内容涉及不在对象树中的对象的初始化 http://msdn.microsoft.com/en-us/library/ms788731.aspx.

在其中我找到了以下代码示例:

Button b = new Button();
b.BeginInit();
b.Background = Brushes.Blue;
b.Width = b.Height = 200;
b.EndInit();
b.Measure(paperSize);
b.Arrange(new Rect(paperSize));
b.UpdateLayout();

我查看了我在上面的问题中提到的 Laurent 的(再次出色的)示例,并自定义了XamlReader如下:

var element = (FrameworkElement)XamlReader.Load(xamlInput);

element.BeginInit();
element.DataContext = dataContext;

...

element.Measure(renderingSize);
element.Arrange(renderingRectangle);

element.EndInit();
element.UpdateLayout();

我添加了BeginInit(), EndInit() and UpdateLayout()(尽管通过排除过程我相信UpdateLayout()是关键),现在动态加载的 xaml 中的绑定表达式可以正常工作。欢呼!

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

绑定不适用于动态加载的 xaml 的相关文章

随机推荐

  • 克隆/拉取 git 存储库时出现致命读取错误

    我在我的系统上使用 Git for Windows git 版本 1 7 4 msysgit 0 并且大多数时候它都工作得很好 但是今天在大学 每当我尝试使用 Git 时 我都会遇到问题git clone or git pull or ge
  • 在新日期上调用 getTime 时,未定义不是函数

    当尝试运行它时 我得到 未定义不是一个函数 我缺少什么 function bench func var start new Date getTime for var i 0 i lt 10000 i func console log fun
  • 当多个Spring Singleton实例同时访问时

    如果您在 Spring 配置中的单例范围内定义服务 那么如果多个用户尝试同时访问它 即作为依赖项注入到您的控制器中 会发生什么情况 它应该引起任何冲突吗 或者 IoC 容器将保留后面的调用直到第一个调用完成 如果是这样 它会降低大型应用程序
  • 绑定到枚举的关联值

    是否有一个标准的方法来绑定 比如说 TextField到枚举的关联值 所以 鉴于此 enum Choice case one String case two String 我可以以某种方式将它用作视图中的绑定吗 State var choi
  • 当方向设置为水平时,UIPageViewController 响应垂直平移

    我在这上面花了几个小时 我已经初始化了UIPageViewController with UIPageViewControllerNavigationOrientationHorizontal 但由于某种原因viewControllerBe
  • 我可以在共享库中声明全局变量吗?

    我可以在库中声明一个全局变量 然后将其编译为共享对象吗 通过将其声明为 extern 从其他库或主应用程序代码中引用它是否安全 理论上它是有效的 niko dev1 snippets cat libcode c int variable l
  • drools 中是否有任何 API 可以通过传递值来动态创建 drl 文件?

    我知道如何使用所有方法在 KIE 工作台中创建 DRL 文件 但我的问题是不使用 KIE 工作台 我们可以创建 drl使用我们所需的值进行文件 如果有任何可能性 请建议我 同样的方式建议我任何与此相关的 API 提前致谢 您可以使用Droo
  • 移动 safari 图片上传及其大小

    众所周知 Safari 移动版现在允许通过相机或图像库上传文件 问题 是 当从相机中拍摄照片时 它会按原样发送 这意味着它占用的内存非常大 我认为即使在 iPhone 4 上也大约有 2 或 3 mb 这使得上传速度非常慢并且消耗带宽 不适
  • 为什么 Visual Studio 有时无法到达我的断点?

    我一直在使用 Visual Studio 2005 和 2008 我注意到有时当我在代码中放置断点时 它不想转到断点 所以我重新启动我的电脑 然后它又可以工作了 好像有什么东西卡住了 这种事只发生在我身上吗 我怎样才能防止这种情况发生 这让
  • 使用 GORM 根据子表中的列进行排序?

    我有一个名为员工和子表地址的表 现在我想使用 GORM 获取地址表中按地址1排序的员工列表 Employee findAllByName name max maxRecords offset 100 sort Address address
  • 如何在JTree中的节点旁边显示特定的属性名称和值?

    我想在节点名称旁边显示属性的名称和值JTree 谁能告诉我该怎么做 这是我用来显示的代码JTree import javax swing import java awt import java awt event import java a
  • 如何获取 iPhone MPMoviePlayer 视频的总时间?

    我只想弄清楚如何获取视频的总时间 以秒为单位 是否有加载的视频元数据之类的 MP电影播放器 控制器有财产duration iOS 3 2 电影的时长 以秒为单位 只读 property 非原子 只读 NSTimeInterval持续时间 如
  • 就 RESTful 和无状态而言,拥有 /currentUser 等 REST 资源是否合法?

    就 RESTful 和无状态而言 拥有这样的资源是相当合法的 用户 123 但是 问题是 拥有省略用户 ID 并假设它是从用户会话在服务器上隐式解析的资源是否合法 例如 loggedUser 当标识符为 123 的用户被授权时 该资源将指向
  • 获取 Ruby 中第一个 = 符号之后的子字符串

    纯粹出于好奇 是否有一种更优雅的方法来简单地获取第一个之后的子字符串 字符串中的符号 以下作品回馈name bob string option name bob string string index 1 1 只是感觉不太像Ruby 这也有
  • 用于 Java 的 JWT(JSON Web Token)库 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一个使用 Java 和 AngularJS 开发的 Web 应用程序 并选择实现令牌身份验证
  • Fabric 上的事件中心已关闭 编写您的第一个应用程序

    我目前正在尝试在此处运行 Hyperledger Fabric 的第一个应用程序示例 gt http hyperledger fabric readthedocs io en release 1 1 write first app html
  • 您推荐哪种工作流引擎? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在考虑在这个即将到来的项目中使用工作流引擎的想法 我们知道使用工作流引擎有很多注意事项 并且我们在许多平台上拥有丰富的开发经验 因此我
  • C 嵌入式应用程序中 time() 函数的问题

    我在用time 在 ARM 微控制器上 处理器一到达此函数就会重新启动 奇怪的是 当我处于调试模式时 代码运行得很好 但一旦我想将其应用到独立模式 我就会遇到重置 我是否忽略了什么 这个功能有替代品吗 代码部分是这样的 include
  • 对 Promise 中的错误和拒绝感到困惑

    All 我对 JS Promise 还很陌生 当谈到 Promise 链接时 有一个令人困惑的地方 假设我有一个如下的 Promise 链接 var p new Promise function res rej then function
  • 绑定不适用于动态加载的 xaml

    我在用着XamlReader成功加载 xaml 文件并创建FrameworkElement跟 共事 我正在加载的 xaml 中包含绑定表达式 例如