Tag: 数据绑定

如何确保,ViewModel属性在再次更改它之前已经在视图上绑定了?

有以下情况: ViewModel有一个变化非常快的对象。 (通过不同的线程) View通过NotifyPropertyChanged接口获得通知,但它看起来很慢并且在View绑定新值并绘制之前它会更改次数因此它会错过某些值。 我还尝试将View绑定到队列,然后ViewModel可以将其排队, View可以通过dequeueing绘制。 不幸的是发生了另一个问题:在RaisePropertyChanged(() => queue); View未被告知已更改。 在这种情况下, INotifyPropertyChanged接口的实现不起作用。 你有什么主意吗? ViewModel示例代码: public class ExamplaryViewModel { public ExamplaryViewModel() { Messenger.Default.Register<NotificationMessage>(this, m => ProcessNotificationMessage(m.Content)); } public void ProcessNotificationMessage(Message message) { MessageOftenBeingChanged = message; RaisePropertyChanged(() => MessageOftenBeingChanged ); } } View绑定到MessageOftenBeingChanged 。 另一种选择是按照评论中的建议准备快照: public void ProcessNotificationMessage(Message message) { Messages.Enqueue(message); RaisePropertyChanged(() => Messages); } View : […]

填写dataGridView谢谢backGroundWorker

我有这段代码: private void backgroundWorker1_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e) { remplirDataGrid(); } private void frmChercherActesLoad(object sender, EventArgs e) { backgroundWorker1.RunWorkerAsync(); } private void remplirDataGrid() { dataGridView1.DataSource = ActeServices.getAllActes(0, 40); dataGridView1.Columns[0].Visible = false; dataGridView1.Columns[1].HeaderText = “Code acte”; dataGridView1.Columns[2].HeaderText = “Désignation”; dataGridView1.Columns[3].HeaderText = “Pris en charge”; dataGridView1.Columns[4].HeaderText = “Id article”; dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells); } 这是方法getAllActe : public static IEnumerable getAllActes(int skipCount, […]

WPF数据绑定到更改对象

我有一个用户控件,显示当前登录的用户名。 我已将控件中的TextBlock绑定到我的应用程序中的User obejct的UserId属性。 我遇到的问题是,每次新用户登录时,我的绑定作为源的用户对象都会更改。 我可以想到一个解决方案,当用户obejct发生变化时触发一个事件,然后通过控制抓住我,然后重新初始化绑定,但这似乎不太理想。 有这个问题的解决方案,我觉得它一定很常见吗? 干杯, 詹姆士

你能否将GroupBox的可见性绑定到它的孩子的可见性?

我有一个问题试图让GroupBox崩溃。 我想要一个GroupBox,如果它的所有子节点都被折叠,它将崩溃。 我已经设法通过对属性进行多重绑定来实现这一点,如下所示。 这个问题是我们希望能够多次执行此操作而不必担心不使用绑定。 所以我的问题是有什么方法可以做到这一点,最好是一种风格。 另一个要求是它必须是xaml而不是代码。 所以我的理想答案是风格,所以我可以在我的xaml中使用以下内容。 我看过这些问题,他们让我认为这是不可能的; controltemplate中的 绑定 , stackpanel可见性 , 边界可见性 。 对不起,如果之前已经回答过。 提前感谢您的任何答案/评论。

WPF DataBinding:取消了属性更改 – Combobox未对齐

我有一个带有combobox和文本框的WPF表单(两者都是数据绑定到Object的属性)。 更改combobox或文本框输入会更新Object的属性,数据绑定会启动并更新UI。 问题是,我实现了一种取消更改的方法,这种方式有效,但却搞砸了UI更新。 如果我从combobox中进行更改并取消它,combobox不会将选定的值恢复为应该的值(由对象的值绑定)。 如果我从文本框进行更改并取消它,文本框和combobox都显示正确的数据,但然后焦点立即被给予combobox(当它应该留在文本框上,因为这是我有的最后一个地方它)。 我不确定如何在一般方面解决这个问题,因为它决定处理变更事件并validation之后没有取消变更(因为那时数据绑定的重点是什么?)…… //User.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Text; namespace MyTesting { public class User : AbstractEntity { public User() { Rankings = new Dictionary(); Rankings.Add(1, “Newbie”); Rankings.Add(10, “Novice”); Rankings.Add(25, “Adept User”); Rankings.Add(50, “Power User”); Rankings.Add(100, “Admin God”); } public Dictionary Rankings { get; set; } private Int32 _rank; […]

如何处理MVVM中并行化任务的ObservableCollection 结果?

我在一个单独的Task中收集数据,我想使用ObservableCollection将数据绑定到GUI组件。 所以我的代码是这样的: private ObservableCollection _items; public ObservableCollection Items { get { return _items; } set { if (_items.Equals(value)) { return; } _items = value; RaisePropertyChanged(“Items”); } } private void LoadData() { Task task = Task.Factory.StartNew(() => { ObservableCollection itms = _htmlParser.FetchData(…); Dispatcher.CurrentDispatcher.Invoke((Action)delegate { Items = itms; }); }); } 从执行某些HTTP请求的组件中获取数据。 我得到的错误是: Must create DependencySource on […]

在validation文本框/复选框之前,文本框/复选框的数据绑定值不正确

我有一个winforms复选框,绑定到Entity Framework实体的属性。 因此,例如,我有一个绑定到属性IsSleeping的checkboxSource.DataSource bindingSource.DataSource = myDog ,因此当用户选中该框时, IsSleeping变为true,当用户取消选中该框时, IsSleeping变为false。 这很好用。 问题是IsSleeping的值在validation复选框之前不会更新,只有当焦点从复选框移到其他位置时才会发生。 因此,如果我想在取消选中该框时发生某些事情: private void IsSleepingCheckbox_CheckedChanged(object sender, EventArgs e) { OnDogPropertyChanged(myDog); MyAnimalEntities.SaveChanges(); } myDog.IsSleeping仍然是真的,直到稍后提出复选框的Validated 。 因此,当可怜的myNaughtyKitty (正在听DogPropertyChanged事件)来吃myDog的食物菜时,想到myDog正在睡觉, myDog真的只是醒来! 不好了! 更糟糕的是 , MyAnimalEntities.SaveChanges()还没有看到对myDog的更改,因此IsSleeping的值永远不会保存到数据库中。 将.SaveChanges()调用移动到IsSleepingCheckbox_Validated并不能解决这个问题,因为如果复选框被切换但是表单关闭而没有将焦点从复选框移开 , 则复选框永远不会被validation ,因此它的状态永远不会被保存! 我想这对于数据绑定和复选框/文本框来说一定是一个相当常见的问题,事实上我在网上找到了大量关于这个主题的post,但似乎没有人能够找到解决方案。 有没有人能够为此找到解决方法?

如何对Visual3D或UIElement3D等3D元素使用数据绑定

我在viewmodel中有一堆项目,我将使用Viewport3D在3D中渲染。 UI的相关部分定义如下: (我从上面的xaml中省略了光线和相机,但当然在我的代码中也存在) 现在我希望我的自定义控件将所有项目(来自我定义的Items依赖Items属性)呈现为位于其绑定对象指定位置的单个UIElement3D元素。 到目前为止,我的方法是覆盖GetVisual3DChild和相关的方法/属性,以设置我的项目的父子关系。 我面临的问题是如何将子的转换变换数据绑定到绑定对象中定义的值 – 由于UIElement3D不是从FrameworkElement派生的,因此没有SetBinding方法,因此没有明显的方法来指定代码绑定。 请注意,绑定转换在XAML中工作正常: 当我无法访问FrameworkElement.SetBinding时,如何从代码创建上述绑定?

如何在asp.net中嵌套转发器

我需要知道如何在用户控件中嵌套转发器。 事情的html方面很好,这是我需要帮助的绑定和代码。 我只能找到使用sql数据源的例子,这实际上并没有帮助。 我的中继器看起来像这样: <asp:HyperLink runat="server" Text='’ NavigateUrl=”> 我需要做的是希望合理地清楚 – h4规则应该出现一次,属于该学科的所有条目列在下面,然后是下一个h4,然后是适当的列表,下一个h4,依此类推。 数据源是在代码隐藏中创建的数据视图,其中每一行都有“名称”,“链接”,“NOtation”和“Discipline”。我已将数据视图绑定到最外层的转发器,并且它按预期运行 – 列出了规则名称对于每个条目,但在内部转发器中不显示任何数据。 我该如何开展这项工作? 编辑:只是为了澄清,我在代码隐藏中有一个数据表。 该表中的每一行都是一个项目,每个项目都属于一个学科。 我想使用外部中继器列出学科,内部列出每个学科下分组的项目。 像这样: DISCIPLINE 1 Item Item Item DISCIPLINE 2 Item Item DISCIPLINE 3 Item Item 目前,将数据表绑定到外部转发器给出了这个(示例使用上面的数据): DISCIPLINE 1 DISCIPLINE 1 DISCIPLINE 1 DISCIPLINE 2 DISCIPLINE 2 DISCIPLINE 3 DISCIPLINE 3 我按照建议在外部转发器上使用了OnItemDataBound,作为测试用例,我可以访问数据: protected void rptDiscipline_ItemDataBound(Object Sender, RepeaterItemEventArgs e) { […]

如何在Asp.Net Core中设置日期绑定的文化?

我有一个带MVC的Asp.Net Core应用程序。 我正在提交表格上有日期的表格。 表格看起来(大致)像这样: @model EditCustomerViewModel 控制器动作是: [HttpPost] public async Task Edit(EditCustomerViewModel viewModel) { // do stuff return RedirectToAction(“Index”); } 查看模型是: public class EditCustomerViewModel { public Guid Id { get; set; } [DataType(DataType.Date)] public DateTime ServiceStartDate { get; set; } [DataType(DataType.Date)] public DateTime? ServiceEndDate { get; set; } // etc. } 我在英国,因此日期不是美国格式: dd/MM/YYYY 。 所以默认我提交6/22/2017 […]