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

数据绑定ItemsControl(DataTemplate)不更新/仅接收程序启动时的值

问题:数据绑定 ItemsControl(DataTemplate)不更新/仅接收程序启动时的值

答案

在 C#/.NET 框架中,通过 ItemsControl(DataTemplate) 进行数据绑定,可以实现将数据与视图逻辑分离。但是,当仅希望在程序启动时接收数据,而在后续过程中不更新数据时,需要使用弱数据绑定(Weak Data Binding)。

弱数据绑定通过使用 Binding 属性,将数据与视图控件进行关联。当数据变化时,数据绑定将自动更新视图。但如果希望建立仅在启动时接收数据的绑定,可以使用以下代码示例:

代码语言:csharp
复制
// 创建一个存储数据的集合
private ObservableCollection<string> _data = new ObservableCollection<string>();

// 初始化数据绑定
private void InitializeDataBinding()
{
    // 将数据与视图进行绑定
    ItemsControl.ItemsSource = _data;

    // 创建一个弱数据绑定,仅当数据变化时更新视图
    Binding binding = new Binding();
    binding.Mode = BindingMode.OneWay;
    binding.Source = _data;
    binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
    _data.SetBinding(ItemsControl.ItemsSourceProperty, binding);
}

在这个示例中,我们创建了一个 ObservableCollection 来存储数据,然后通过弱数据绑定将其与视图进行关联。绑定仅当数据源本身发生变化时更新视图。

注意:若不设置 UpdateSourceTrigger 属性,默认情况下,弱数据绑定在源发生变化时立即更新视图。通过设置 UpdateSourceTrigger 为 PropertyChanged,可以确保仅在数据源属性发生变化时更新视图。

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

相关·内容

《深入浅出WPF》学习笔记之深入浅出话Binding

TwoWay 源↔目标 无论是目标属性还是源属性,只要发生了更改,TwoWay 就会更新目标属性或源属性。 OneWay 源→目标 当源属性发生更改时更新目标属性。...OneTime 当应用程序启动时或 DataContext 进行更改时更新目标属性。 OneWayToSource 目标→源 在目标属性更改时更新源属性。...Explicit,源不会更新除非你手动来操作 LostFocus,一旦目标控件失去焦点,源就会被更新。 PropertyChanged,一旦绑定属性改变,源会立即更新。...View Code 6.3.3 Binding路径(Path)   即绑定到底需要关注哪个属性。...ItemsSource属性可以接收IEnumerable接口派生类实例作为自己。   每个ItemsControl派生类都有自己对应条目容器(Item Container)。

5.6K10
  • 了解模板化控件(8):ItemsControl

    模仿ItemsControl 顾名思义,ItemsControl是展示一组数据控件,它是UWP UI系统中最重要控件之一,和展示单一数据ContentControl构成了UWP UI绝大部分,ComboBox...1.3 ItemTemplate属性 接下来需要提供public DataTemplate ItemTemplate { get; set; }属性,它定义了Items中每一项数据如何显示。...OnItemsCollectionChanged; Items = items; } /// /// 获取或设置ItemTemplate...3.3 不使用依赖属性 因为集合属性通常不会使用动画,或者通过Style中Setter赋值,而且依赖属性标识符是静态,集合属性初始有可能引起单例问题。集合属性通常在构造函数中初始化。...3.4 绑定到集合属性 通常不会绑定到集合属性,更常见做法是如ItemsControl那样,绑定到ItemsSource。

    1.4K50

    【翻译】WPF中数据绑定表达式

    在本文中,让我们研究WPF提供不同类型数据绑定表达式。 介绍 数据绑定是一种强大技术,它允许数据在UI元素和业务模型之间流动。当业务模型中数据发生变化时,它会自动将更改反映到UI元素上。...依赖生效并给出以下输出。 输出 2.4 PreviousData 这是相对使用最少方式。当数据被分析时,这就出现了,我们需要表示相对于以前数据变化。 让我们举个例子来更详细地理解它。...> 现在,为了正确地表示数据,创建DataTemplate,如下所示。...> 输出 蓝色框高度是列表中项目的,旧数据显示在右侧。...该项第一个为“60”。因此,第一项没有旧。 3、集合当前项绑定 在处理集合时使用。使用这个绑定表达式,您可以非常容易地读取SelectedItem属性。

    2.5K30

    【翻译】WPF中数据绑定表达式

    在本文中,让我们研究WPF提供不同类型数据绑定表达式。 介绍 数据绑定是一种强大技术,它允许数据在UI元素和业务模型之间流动。当业务模型中数据发生变化时,它会自动将更改反映到UI元素上。...依赖生效并给出以下输出。 输出 2.4 PreviousData 这是相对使用最少方式。当数据被分析时,这就出现了,我们需要表示相对于以前数据变化。 让我们举个例子来更详细地理解它。...> 现在,为了正确地表示数据,创建DataTemplate,如下所示。...> 输出 蓝色框高度是列表中项目的,旧数据显示在右侧。...该项第一个为“60”。因此,第一项没有旧。 3、集合当前项绑定 在处理集合时使用。使用这个绑定表达式,您可以非常容易地读取SelectedItem属性。

    2K10

    基于javaweb学生成绩管理系统

    这是一个数据课程设计作业,是基于javaweb一个学生成绩管理系统,里面涵盖数据增删改查等等操作,前端为了美观用是bootstrap框架。...item容器(container),这个item实际就是ItemsControl.ItemsSource(IEnumerable类型)列表数据项。...这个方法第一个语句告诉我们数据项item可以通过container读取ItemForItemContainerProperty获得。...:在获取一个Panel所关联ItemsControl时,如果这个PanelIsItemsHost属性非真则返回空;不然,那么如果这个PanelTemplateParent是ItemsPresenter...我们在第三篇文章介绍ItemsPanelTemplate时曾提到过,ItemsControl默认Template里ItemsPresenter只起一个占位符(placeholder)作用,它主要角色是接收

    1.4K30

    一个跨平台ChatGPT悬浮窗工具

    一个跨平台ChatGPT悬浮窗工具 使用avalonia实现ChatGPT工具,设计成悬浮窗,并且支持插件。 如何实现悬浮窗? 在使用avalonia实现悬浮窗也是非常简单。...宽度绑定到ViewModelWidth属性中,默认270, 接下来给出所有代码, <Window xmlns="https://github.com/avaloniaui" xmlns...> </ItemsControl...Gotrays.Suspension.PlugIn则是插件定义接口规范。 Gotrays.Update则是检查更新程序,用于更新程序。 实现插件 plug-in 插件模块,用于扩展功能。...只需要将程序集放置在./plug-in目录下即可。 服务会在一个程序集中发现所有的插件类,并且进行注册。 按照上面的方式非常简单就集成了插件。

    28430

    C# WPF MVVM开发框架Caliburn.Micro关于关于Actions⑤

    Action.TargetWithoutContext 将Action.Target属性设置为指定实例。字符串用于从IoC容器解析实例。...这有一点很好,每次参数值更改时,我们都会调用与操作关联guard方法(在本例中为CanSayHello),并使用其结果更新ActionMessage附加到UI。继续运行应用程序。...您将看到它行为与前面的示例中相同。 除了文字绑定表达式外,还有许多有用“特殊”可用于参数。...注意:使用特殊,如$this或命名元素 如果指定属性,CM将使用默认属性,该属性由特定控件约定指定。...我们将在将来更多地讨论约定,但是您应该很高兴知道这些约定区分大小写,甚至可以检测前面提到“特殊”

    2.1K20

    【愚公系列】2023年10月 WPF控件专题 DataGrid控件详解

    《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。...DataGrid可以与各种数据源进行绑定,如数据表、XML文件、对象集合等,并且可以进行列自定义、排序、过滤和分组等操作。...数据编辑:DataGrid控件可以支持数据编辑,包括单元格编辑、行编辑和列编辑等方式,方便用户对数据进行修改和更新。...,用于绑定按钮点击事件。...在StudentDialogViewModel中,我们使用了一个私有字段_student来存储传入Student对象,以及一些属性来绑定StudentDialog控件,在属性setter中通知界面更新

    1.2K00

    《深入浅出WPF》——模板学习

    你一定会想到使用一个CheckBox控件来满足要求;再比如颜色实际上是一串数字,而用户基本不可能只看这串数字就能想象出真正颜色,而且用户也希望只能靠输入字符来设置颜色,这时,颜色这一“数据内容...(流动在控件之间是事件) ~~~~ 数据驱动,则是用户通过控件去改变控件绑定数据,因为数据变了,与该数据绑定控件都会发生变化。...夸张地说,是DataTemplate帮助彻底完成了“数据驱动界面”,让Binding和数据关联渗透到用户界面的每一个细胞中。...(一般外部控件绑定是Binding,可见内部控件绑定与外部控件还是做了一定区分)将自己属性关联在目标控件某个属性上,必要时候还可以添加Converter。...(类型是DataTemplate,在ContentControl类中)两个属性(所以在命名上也是很符合哲学思想,Content是内容,那就是与数据&算法这个程序核心相关;而控件更有本身外在形式感觉

    4.8K10

    WPF 已知问题 在 ObservableCollection CollectionChanged 修改集合内容将让 UI 显示错误

    本文将告诉大家此问题复现方法和修复方法 在 UI 绑定 ObservableCollection 修改时,给此集合列表添加新项目,此时 UI 绑定数据是对但是界面显示错误。...System.InvalidOperationException:“某个 ItemsControl 与它项源不一致。...:3”生成器已接收到一个 CollectionChanged 事件序列,这些事件与 Items 集合的当前状态不符。...要获得更及时异常,应将生成器上附加属性“PresentationTraceSources.TraceLevel”设置为“High”,然后重新运行该方案。...这会使得在发生每个 CollectionChanged 事件之后运行检测逻辑,因此,这将减慢应用程序运行速度。

    2.5K30

    依赖属性1:概述

    使用场景 UWP依赖属性经过大幅简化(相对于WPF),更关注它核心功能:使用绑定,通过多个输入计算属性,属性变化通知,节约内存使用。...默认 不是指数据类型默认,是指PropertyMetadata中指定默认。在上面Title例子中,默认是string.Empty。...2.3 属性变化通知 使用依赖属性,不必再实现INotifyPropertyChanged即可在属性改变时通知UI更新。...在UWP中常见集合属性,只有ItemsControlItemsSource等少数几个是依赖属性,其它大部分都是CLR属性,譬如HubSections; CPU性能敏感场合。...依赖属性和线程 所有依赖属性都只能在UI线程上使用,否则会抛异常(“应用程序调用一个已为另一线程整理接口。”)。不过如果使用Async模式的话通常会回避了线程问题。

    67420

    【愚公系列】2023年11月 WPF控件专题 2023秋招WPF高频面试题

    转换器充当目标和源之间桥梁,当目标与一个源绑定数据类型不一致时,需要转换器来做中转。例如有一个文本框和一个按钮控件, 当文本框文本被填充或为空时,希望启用或禁用按钮控件。...它们通过数据绑定和依赖属性或多个属性进行通信。 ViewModel 是一个非可视类。 MVVM 设计模式派生自任何基于 WPF 类。 ViewModel 直接知道View。...因此,“DataTemplate”用于为底层数据提供可视化结构,而“ControlTemplate”与底层数据无关,只是为控件本身提供可视化布局。...“ControlTemplate”通常只包含“TemplateBinding”表达式,绑定回控件本身属性,而“DataTemplate”将包含标准绑定表达式,绑定到其“DataContext”属性(...不会保留绑定,因此如果修改了绑定源,则不会更新副本中。35.ObservableCollection 和 BindingList 有什么区别?

    49422

    通过 INotifyPropertyChanged 实现观察者模式

    当属性改变时,它可以通知客户端,并进行界面数据更新.而我们不用写很多复杂代码来更新界面数据,这样可以做到方法简洁而清晰,松耦合和让方法变得更通用.可用地方太多了:例如上传进度,实时后台数据变更等地方...当属性改变时,它可以通知客户端,并进行界面数据更新.而我们不用写很多复杂代码来更新界面数据,这样可以做到方法简洁而清晰,松耦合和让方法变得更通用.可用地方太多了:例如上传进度,实时后台数据变更等地方...  数据绑定数据源对象可以是一个含有数据单一对象,也可以是一个对象集合。...如果要绑定到一个集合类型数据源对象,绑定目标可以使用ItemsControl,如ListBox或DataGrid等。...另外,通过定制ItemsControl数据模板(DataTemplate),还可以控制集合对象中每一项显示。

    2.8K10
    领券