Tag: 数据绑定

添加到ObjectSet 的对象的多态删除不会引发ObjectSet上的IBindingList.ListChanged .IListSource.GetList()

概览/描述 简单:从添加到ObjectSet TEntity 派生的运行时类型的对象的多态删除不会引发由ObjectSet.IListSource.GetList()方法返回的IBindingList对象上的IBindingList事件。 但是,在ListChanged事件上有效地通知删除运行时类型与 TEntity 匹配的实例。 为了澄清,在任何时候,对象都被有效地从底层集合或数据视图/存储中移除,但是当这些对象是严格从实际使用的TEntity派生的类型的实例时,不会引发ListChanged事件以通知它们的移除。 对于集合的运行时多态性的适当数据绑定支持,这只是一个惊人的BUG。 REPLICATION 型号设置 每种类型战略表。 在Server 2012 Express上映射和validation实体模型与已对齐的SQL数据库。 这是实体层次结构(伪UML): FiascoEntityContext : ObjectContext + Foos : ObjectSet Foo : EntityObject + Id: Int32 + Name: String SpecialFoo : Foo + SpecialProperty: String 示范代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ComponentModel; using System.Data.Objects; namespace FiascoEF { class […]

获取LongListSelector项的SelectedIndex

我有一个WP8 DataBound应用程序,其中ItemViewModel绑定到LongListSelector 。 很简单,当用户点击列表中的项目时,我需要检索所选项目的索引号以供将来使用。 (0是列表中的第一个,1是第二个,等等) 因此,正如这可能会检索所选项目的某个属性: string whateverProperty = (MyLongListSelector.SelectedItem as ItemViewModel).WhateverProperty; 我需要这样的东西(显然是代码): int indexNumber = (MyLongListSelector.SelectedItem as ItemViewModel).GetSelectedIndex(); 我认为SelectedIndex属性是我需要的东西,但我无法弄清楚如何检索它。 谢谢! 编辑:解决了! 以下内容让我知道我正在寻找的内容: int selectedIndex = App.ViewModel.Items.IndexOf(MainLongListSelector.SelectedItem as ItemViewModel);

Windows窗体combobox控件的奇怪行为

我正在开发一个小型桌面应用程序,我的表单上有几个下拉列表(combobox-es)。 我填充了一个字符串列表,这些字符串将用作所有字符串的数据源。 这是我的Form.cs类的示例: List datasource = new List(); datasource.Add(“string 1”); datasource.Add(“string 2”); 然后我将此列表设置为几个combobox的数据源: cmbDataType1.DataSource = datasource; cmbDataType2.DataSource = datasource; 这一切都发生在同一个方法中,从Form构造函数调用。 这是一个奇怪的部分:在我更改其中一个中的选定值后,将在另一个中设置相同的值。 没有设置SelectedIndexChange事件。 我搞砸了某个地方,但我不能把手指放在哪里……

为后面的代码中的xaml元素设置多绑定

我有以下工作XAML代码,它基本上绑定了几个属性来计算我的用户控件的最终位置: … 由于各种原因(但特别是为了避免相关来源,我现在正试图在代码中做同样的事情而没有成功。 这是我目前的代码: public CurvePointControl(CurveEditor CV) { InitializeComponent(); MultiBinding multiBinding = new MultiBinding(); multiBinding.Converter = m_VToYConverter; multiBinding.Bindings.Add(new Binding(“V”)); multiBinding.Bindings.Add(new Binding(CV.MinVProperty)); // doesn’t work multiBinding.Bindings.Add(new Binding(CV.MaxVProperty)); // doesn’t work multiBinding.Bindings.Add(new Binding(CV.ActualHeight)); // doesn’t work multiBinding.NotifyOnSourceUpdated= true; this.SetBinding(TranslateTransform.YProperty, multiBinding); //Doesn’t work too: //BindingOperations.SetBinding(XTranslateTransform, TranslateTransform.YProperty, multiBinding); } 我仍然无法相信将XAML转换为c#代码是如此困难。 转换器被调用但只有一次且没有有效的属性值。 什么是错的? 我怎么能调试这样的问题?

数据绑定Windows窗体控件在失去焦点之前无法识别更改

我使用数据绑定在C#Windows窗体客户端的文本框中显示值。 当用户单击“保存”时,我会将更改保留到数据库中。 但是,将忽略活动编辑器中的新值(保存以前的值)。 如果我跳出活动编辑器,然后保存,则新值将保持不变,如预期的那样。 有没有办法在持久化之前强制主动控件接受其值?

数据绑定WPF ComboBox与’新…’项目

大家好 我有一个combobox,它被数据绑定到一个元素列表。 但除了元素列表,我想要另一个项目。 此项应显示“新建…”文字 这个想法是,如果他们选择一个普通元素,它会执行一些涉及该元素的动作。 如果他们选择“新建”元素,则会将他们带到可以创建新项目的屏幕。 问题是,当你对某些东西进行数据处理时,你没有选择向它添加另一个项目,并且不存在将虚拟项目添加到元素列表中的问题…… 这是一个基于具有’DefaultElement’属性的ComboBox创建新控件的机会吗? (包含所有相关的模板和命令绑定等)

使用编程排序绑定到DataGridView的可排序BindingList

我已经在http://msdn.microsoft.com/en-us/library/aa480736.aspx上实现了SortableSearchableList类,并为它添加了一个Sort方法,如下所示: public void Sort(PropertyDescriptor prop, ListSortDirection direction) { ApplySortCore(prop, direction); } 这个类在通过单击任何列标题对DataGridView进行排序时起作用,但是我需要能够以编程方式调用指定列的Sort方法(在本例中使用sortButton控件)。 我在网上找到的几个代码示例建议获取列的PropertyDescriptor并将其传递给ApplySortCore方法。 我还没有那个工作。 我可以获取DataGridView或SortableSearchableList的PropertyDescriptorCollection属性,但似乎无法获取Find方法来获取指定列/成员的PropertyDescriptor。 这是我的其余代码: namespace SortableBindingListTest { public partial class Form1 : Form { private SortableSearchableList alarms = new SortableSearchableList(); public Form1() { InitializeComponent(); alarms.Add(new Tags(“some text”, “1”)); alarms.Add(new Tags(“more text”, “2”)); alarms.Add(new Tags(“another one”, “3”)); dataGridView1.AutoGenerateColumns = false; dataGridView1.AllowUserToAddRows = true; dataGridView1.EditMode […]

绑定数据更改时Winforms列表框不更新

下图显示了我的代码的工作原理。 当我按下按钮2时,列表框会更新,但不会在我按下按钮1时更新。 为什么? 伪代码http://sofzh.miximages.com/c%23/mj69oj.gif 问题线程是否相关? 如果是,我应该在哪里添加对(Begin)Invoke的调用? 需要注意的一件有趣的事情是,如果我先按button1然后按下按钮2,当我点击button2时会显示button1点击生成的数据。 所以似乎doFoo生成的数据在某处缓冲,然后在按下button2后推送到列表框。 编辑: 我尝试将AddNumber添加到表单代码中,并在listBox1.InvokeRequired返回true时添加对Invoke的调用。 这解决了问题,但不是最好的设计。 我不希望GUI必须“担心”如何将项添加到模型的一部分列表中。 如何在添加到列表类内部列表的同时保持逻辑,同时在列表更改时仍然更新gui? 编辑2: 现在我们已经确认这是一个线程问题,我已经更新了图像,以更接近地反映我正在处理的实际代码的设计。 虽然Lucero的建议仍然解决了这个问题,但我希望能找到一些不需要表格来了解dll或CDllWrapper的东西。 模型(ListBoxDataBindingSource等)应该对视图一无所知(列表框,按钮,标签等)

Winforms将Enum绑定到单选按钮

如果我有三个单选按钮,将它们绑定到具有相同选择的枚举的最佳方法是什么? 例如 [] Choice 1 [] Choice 2 [] Choice 3 public enum MyChoices { Choice1, Choice2, Choice3 }

绑定到元组列表

我有一个元组列表配对两个数据……我想将列表绑定到数据网格。 为了显示,它工作正常…但是如果我尝试修改一个条目,它说“一个TwoWay或OneWayToSource绑定不能在只读属性’Item1’上工作”……大概是元组在.NET 4.0中是不可变的。 是否有一种简单的方法可以绑定到数据对而无需创建自己的可变元组类?