首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

wpf - ContainerFromItem在set方法中返回null,但在get方法中工作正常

WPF(Windows Presentation Foundation)是一种用于创建用户界面的框架,它提供了丰富的图形、多媒体和用户交互功能。在WPF中,ContainerFromItem是一个方法,用于从给定的项(Item)获取其容器(Container)。在set方法中返回null,但在get方法中工作正常的情况下,可能存在以下几种原因:

  1. 数据绑定问题:ContainerFromItem方法通常在数据绑定后才能正常工作。如果在set方法中调用ContainerFromItem,可能是因为数据绑定尚未完成,导致无法找到对应的容器。建议在确保数据绑定完成后再调用ContainerFromItem方法。
  2. 可视化树尚未完全加载:WPF的可视化树是用于呈现界面元素的结构,如果在set方法中调用ContainerFromItem,可能是因为可视化树尚未完全加载。建议在确保可视化树完全加载后再调用ContainerFromItem方法。
  3. UI线程问题:WPF中的UI操作通常需要在UI线程上执行,如果在set方法中调用ContainerFromItem,可能是因为在非UI线程上执行了该操作。建议使用Dispatcher.Invoke方法将操作调度到UI线程上执行。

综上所述,要解决在set方法中返回null但在get方法中工作正常的问题,可以确保数据绑定完成、可视化树完全加载,并在UI线程上执行ContainerFromItem方法。此外,还可以检查是否存在其他与数据绑定相关的问题,例如数据源是否正确设置、数据是否正确绑定到项等。

关于WPF的更多信息和相关产品介绍,您可以参考腾讯云的WPF文档和WPF相关产品:

  1. WPF文档:WPF 文档

请注意,以上答案仅供参考,具体解决方法可能因具体情况而异。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

技术总结:自动扩张WPF树型表格列宽

图1 问题描述 背景     树型控件在GIX4系统中已经被大量使用。这个控件是一年前其它同事在网上搜索到,再引入的。    ...在模板中以PART_起头的控件是控件的约定,具体内容见:《WPF Parts Control Model》。...再查看GridViewRowPresenter的源代码,发现它拥有以下属性:public GridViewColumnCollection Columns{get;set;}、internal UIElementCollection...InternalCollection{get;set;},进一步分析后,我猜测性地得出以下结论:GridViewRowPresenter.InternalCollection简单地包含了所有列的显示元素...在该方法中,它把第一列的元素显示的长度变短,在之前显示一段缩进的空白和Expander控件: protected override Size ArrangeOverride(Size arrangeSize

1.5K50
  • silverlight:ListBox中如何取得DateTemplateItemsPanelTemplate中的命名控件?

    = null)             {                 ListBoxItem _selectedItem = (ListBoxItem)(myListBox.ItemContainerGenerator.ContainerFromItem...            }             ListBoxItem _firstItem = (ListBoxItem)(myListBox.ItemContainerGenerator.ContainerFromItem...} return null;         }     } public class TestData{public string d{set;get;}} } 这里我们借助VisualTreeHelper...sp,按正统处理方法还真是比较麻烦(各位可以google,baidu印证),这里给出一个很取巧的办法:         <StackPanel Orientation..._sp = sender as StackPanel;  } 这样,在listItem_MouseLeftButtonDown中就能借助"_sp"正确引用到ItemsPanelTemplate中的sp了

    79950

    看过这么多爆文,依旧走不好异步编程这条路?​

    SynchronizationContext就是这类死锁的牛鼻子,大多数时候SynchronizationContext是在异步编程后默默工作,但了解这个对象对于理解sync/await工作原理、解决死锁大有裨益...本文会解释: async/await工作机制 SynchronizationContext在异步编程语法糖中的意义 示例代码为什么会deadlock 1....此类实现的同步模型的目的是允许公共语言运行库的内部异步/同步操作使用不同的同步模型正常运行。...大家都知道:WinForm和WPF都有类似的原则:长耗时的任务在后台进行,将异步结果返回给UI线程 。(这难道就是ConfigureAwait方法默认传true的原因?)...,SynchronizationContext.Current=null AspNetSynchronizationContext维护了HttpContext.Current、用户身份和文化,但在ASP

    85320

    一站式WPF--线程模型和Dispatcher

    Dispatcher的新意   在Winform的消息循环中, 为了线程安全,调用Control的Invoke或者BeginInvoke方法可以在创建控件的线程上执行委托,方法的返回值分别为object...; } public DispatcherPriority Priority { get; set; } public object Result { get; } public...其中比较有意思的是Priority属性,从字面来看,它表示了DispatcherOperation的优先级,而且提供了get和set方法,也就是说,这个DispatcherOperation是可以在运行时更改优先级的...Dispatcher提供了BeginInvoke和Invoke两个方法,其中BeginInvoke的返回值是DispatcherOperation,Invoke函数的内部调用了BeginInvoke,也就是说...在WPF中,所有UI对象的基类为DispatcherObject,WPF在对所有DispatcherObject属性操作前进行了线程亲缘性校验,只有在创建UI对象的线程中才可以访问该UI对象。

    32311

    WPF 源代码 资源字典 ResourceDictionary 设置 Source 属性的逻辑

    本文来和大家聊聊在 WPF 里面在给 ResourceDictionary 设置 Source 属性时,在 WPF 框架里面做了哪些逻辑 默认添加 Source 时都是指定 WPF 自身的 XAML 资源字典..., this)); } } } 大概整理一下的在 Source 的 set 方法里面的逻辑大概如下 // 前置属性判断 // 清空当前资源字典的所有元素...,也就是说在 XAML 中写的 Uri 将会被补全 _source = value; sourceUri = _source; Uri uri = BindUriHelper.GetResolvedUri...通过重写 WebRequest 的方法,实现了实际上没有走网络,而是返回了 PackWebResponse 对象,在 PackWebResponse 里面就是读取程序集的资源作为 Stream 返回 因此调用...WpfWebRequestHelper 的 CreateRequest 方法创建的 WebRequest 在传入的是 uri 是一个本地的资源字典的时候,就是读取本地程序集资源返回 Stream 对象

    2.1K10

    一站式WPF--线程模型和Dispatcher

    Dispatcher的新意   在Winform的消息循环中, 为了线程安全,调用Control的Invoke或者BeginInvoke方法可以在创建控件的线程上执行委托,方法的返回值分别为object...; } public DispatcherPriority Priority { get; set; } public object Result { get; } public...其中比较有意思的是Priority属性,从字面来看,它表示了DispatcherOperation的优先级,而且提供了get和set方法,也就是说,这个DispatcherOperation是可以在运行时更改优先级的...Dispatcher提供了BeginInvoke和Invoke两个方法,其中BeginInvoke的返回值是DispatcherOperation,Invoke函数的内部调用了BeginInvoke,也就是说...在WPF中,所有UI对象的基类为DispatcherObject,WPF在对所有DispatcherObject属性操作前进行了线程亲缘性校验,只有在创建UI对象的线程中才可以访问该UI对象。

    29420

    WPF 让普通 CLR 属性支持 XAML 绑定(非依赖属性),这样 MarkupExtension 中定义的属性也能使用绑定了

    如果你写了一个 MarkupExtension 在 XAML 当中使用,你会发现你在 MarkupExtension 中定时的属性是无法使用 XAML 绑定的,因为 MarkupExtension...在 Value 的 set 方法中得到的 value 值是一个 Binding 对象,而不是正常依赖属性中得到的绑定的结果;这意味着我们无法直接使用 Value 的值。...在正常的依赖对象和依赖属性中,这些本来都不需要我们自己来处理。...在构造函数中对 _valueExchanger 进行初始化,因为要传入 this 和一个实例方法 OnValueChanged,所以只能在构造函数中初始化。...于是,绑定就这么在一个普通的类型和一个普通的 CLR 属性中生效了,而且还获得了变更通知。 参考资料 本文没有任何参考资料,所有方法都是我(walterlv)的原创方法,因为真的找不到资料呀!

    1.7K20

    WPF 表单验证之 INotifyDataErrorlnfo 接口的使用示例

    (《WPF 编程宝典》19.4.1 在数据对象中进行验证) 至于 ExceptionValidationRule,有个缺点就是在开发调试时,遇到抛出的异常,会进入中断状态。...,以及一个错误变动事件 ErrorsChanged,如下: 《宝典》中还有如下辅助的代码,一个错误列表,一个设置错误的方法 SetErrors,以及一个清除错误的方法 ClearErrors。...另外还重载了一个 GetErrors 方法,也是针对于同时处理几个属性的场景,并且之前返回类型为 List,相当于只是把错误列表的 key 去掉了,并没有整合,而我这个方法返回值为 List...set 块中加上具体的验证代码,我这里使用了之前添加的验证是否为空的方法 ValidateBlank: 另外,之前这两个操作数是 int 类型,如果保持的话,当删除内容,红框还是会出现,但是 set...然后是加法命令中的改造,主要就是使用了我加的那两个方法(IsContainErrors 和 GetErrors),传递的都是两个操作数属性名称列表,如果有错误(为空),就弹窗提示,并拦截代码执行逻辑(直接返回跳出

    94310

    dotnet 读 WPF 源代码笔记 创建 SolidColorBrush 性能没有想象那么差

    在 WPF 中,常用的画刷里面有纯色画刷 SolidColorBrush 类。因为画刷会对应到 DirectX 的资源,因此之前我以为纯色画刷其实会比 Color 会占用更多的资源。...在 WPF 中 Color 其实是结构体,创建速度快。而 SolidColorBrush 是画刷,会对应 DirectX 资源,相对来说性能会比较差。...但在通过阅读 WPF 的源代码,发现其实 SolidColorBrush 的创建的性能其实是特别好的,因此请不要担心创建了太多的纯色画刷类 在 WPF 中,画刷 Brush 有很多实现,本文的内容是纯色画刷的实现...在 WPF 的机制,将会在 WPF 资源被使用的时候,如画刷被附加到某个元素上,在此元素渲染的时候(准确来说是之前)将会通过 IResource 接口的 AddRefOnChannel 方法让资源通过...Brush 类中,其实是调用了 AddRefOnChannelCore 抽象方法,在 SolidColorBrush 里面实现了 AddRefOnChannelCore 申请非托管资源

    73850

    WPF开源项目:WPF-ControlBase

    在WPF中应用MVC 原文标题:封装:简要介绍自定义开发基于WPF的MVC框架 原文链接:https://blog.csdn.net/u010975589/article/details/100019431...4.1 目的 在使用Asp.net Core时,深感MVC框架作为页面跳转数据处理的方便,但WPF中似乎没有现成的MVC框架,由此自定义开发一套MVC的框架,在使用过程中也体会到框架的优势,下面简要介绍一下这套基于...DisplayName属性:在UI中显示的名称 Logo属性:在UI中显示的图标 如下,Controller中的Button()方法对应的跳转配置如下 [Route("OverView/Button"...将View和ViewModel封装到IActionResult中返回给主页面进行加载 其中Controller中的方法返回类型是async Task,也就是整个页面跳转都是在异步中进行的,可以有效的避免页面切换中的卡死效果...4.4 View中的结构和定义 其中View在项目中的定义就是根据Controller中的方法对应,在MVC中要严格按照结构定义[View/Loyout],好处是可以减少代码量,同时使格式统一代码整齐

    3.6K30

    WPF DataGrid 如何将被选中行带到视野中

    WPF DataGrid 如何将被选中行带到视野中 目录 前言 准备工作 方法一 方法二 总结 独立观察员 2021 年 12 月 11 日 前言 在 WPF 开发中,显示表格一般使用 DataGrid...准备工作 今天准备介绍两个方法。正所谓,工欲善其事必先利其器,所以在开始之前,我们先来构建一个可以模拟后台选中行的功能。...使用的还是之前用过的 DataGrid 的 Demo 程序(在《WPF DataGrid 通过自定义表头模拟首行固定》和《WPF 触屏事件后触发鼠标事件的问题及 DataGrid 误触问题》中用过),加了一个可以填写要选中的行号的文本框...方法一 这个方法是参考《【翻译】WPF 中附加行为的介绍 Introduction to Attached Behaviors in WPF》文章中的将 TreeViewItem(树状列表项)带到视野中的方法...类似于这个帖子的情况《WPF 开启行虚拟化的时候,行选择功能不正常,求解决方案》(https://bbs.csdn.net/topics/392666509): 所以如果因为数据量比较大必须开启行虚拟化时

    1.9K10

    WPF开源项目:WPF-ControlBase

    在WPF中应用MVC 原文标题:封装:简要介绍自定义开发基于WPF的MVC框架 原文链接:https://blog.csdn.net/u010975589/article/details/100019431...4.1 目的 在使用Asp.net Core时,深感MVC框架作为页面跳转数据处理的方便,但WPF中似乎没有现成的MVC框架,由此自定义开发一套MVC的框架,在使用过程中也体会到框架的优势,下面简要介绍一下这套基于...DisplayName属性:在UI中显示的名称 Logo属性:在UI中显示的图标 如下,Controller中的Button()方法对应的跳转配置如下 [Route("OverView/Button"...将View和ViewModel封装到IActionResult中返回给主页面进行加载 其中Controller中的方法返回类型是async Task,也就是整个页面跳转都是在异步中进行的,可以有效的避免页面切换中的卡死效果...4.4 View中的结构和定义 其中View在项目中的定义就是根据Controller中的方法对应,在MVC中要严格按照结构定义[View/Loyout],好处是可以减少代码量,同时使格式统一代码整齐

    3.5K10
    领券