Tag: 数据绑定

在自定义用户控件的DependencyProperty上绑定不更新更新

我在自定义用户控件上进行数据绑定时遇到了困难。 我创建了一个示例项目来突出我的问题。 我是WPF的新手,也是MVVM的新手,所以请耐心等待…… 我创建了一个使用数据绑定两种方式的简单视图。 内置控件上的数据绑定工作正常。 我的自定义控件没有…我在我的控件的PropertyChangedCallback中放了一个断点。 它在启动时被击中一次,但从未再次被击中。 与此同时,我已经绑定到相同价值的标签很高兴倒计时。 我错过了什么? 我的示例项目如下: 主窗口: 这是我的模特: namespace WpfMVVMApp { public class CountdownModel : INotifyPropertyChanged { private int chargeTimeRemaining_Mins; public int ChargeTimeRemaining_Mins { get { return chargeTimeRemaining_Mins; } set { chargeTimeRemaining_Mins = value; OnPropertyChanged(“ChargeTimeRemaining_Mins”); } } #region INotifyPropertyChanged Members public event PropertyChangedEventHandler PropertyChanged; private void OnPropertyChanged(string propertyName) { if (PropertyChanged […]

DataSource更改时,ComboBox不会自动更新?

出于某种原因,当从DataSource(一个简单的BindingList)添加或删除项目时,ComboBox会相应地更新,但如果我编辑这样的项目,它就不会自动更新: myBindingList[index].Name = “NewName”; myBindingList[index].Value = newValue; 为了在编辑项目时更新它而不是创建或删除项目,我必须在更改后执行此操作: myComboBox.DataSource = null; myComboBox.DataSource = myBindingList; 这解决了问题,但它似乎是一个相当混乱的解决方案。 对于大型列表,它可能会变慢(我知道过早的优化),但仍然有办法强制ComboBox更新而不完全重新分配其DataSource? 谢谢阅读。

绑定属性声明为接口vs类类型时,WPF绑定行为是否不同?

这开始于我认为与我的ToString()实现相关的奇怪行为,我问了这个问题: 当ToString()有一个协作对象时,为什么WPF数据绑定不显示文本? 事实certificate它与协作者无关,并且可以重现。 当我将Label.Content绑定到声明为接口类型的DataContext的属性时,在运行时对象上调用ToString() ,标签显示结果。 当我将TextBlock.Text绑定到同一属性时,永远不会调用ToString()并且不显示任何内容。 但是 ,如果我将声明的属性更改为接口的具体实现,它将按预期工作。 这是不是设计? 如果是这样,任何想法为什么? 重现: 创建一个新的WPF应用程序(.NET 3.5 SP1) 添加以下类: public interface IFoo { string foo_part1 { get; set; } string foo_part2 { get; set; } } public class Foo : IFoo { public string foo_part1 { get; set; } public string foo_part2 { get; set; } public override string […]

如何在multibinding中获取父值

我正在使用dataTemplate 。 这是模板: 你能看到这条线吗? 该行抛出exception,应该是因为RAM.Size来自父元素。 我怎么能得到那个价值? 提前致谢!

WPF数据绑定到Size属性

我在WPF中有数据绑定问题,这是我的示例类: public class testClass { public Size testInnerSize; public testClass() { testInnerSize = new Size(66, 99); } } 我想将我的表单中的TextBox绑定到testInnerSize的属性,让我们说Width。 所以我将此文本框的DataContext设置为testClass对象和XAML: <TextBox Text="{Binding Path=testInnerSize.Width }" Name="textBox3" (…) 但是它不起作用,文本框是空的而不是值66.另一方面,当我将DataContext设置为testObject.testInnerSize时,该值显示在文本框中,但在文本修改后它不会在对象中更新。 所以问题是:我如何双向绑定作为另一个对象属性的Size对象的Width属性? 用于测试的完整代码: public partial class testpage : Page { public Size testSize; testClass testObject = new testClass(); public testpage() { InitializeComponent(); testSize = new Size(6, 9); textBox2.DataContext = […]

UserControl菜单上的多级数据绑定相互依赖

我有一个属性Tours : Tours是一个ObservableCollection类的Tour 每个“Tour”都有一个Partie类的ObservableCollection Parties 每个Partie都有一个Equipes类Equipe 我有3个菜单: 首先是与物业Tours 第二个必须与第一个菜单的SelectedItem属性绑定(因此它具有类Partie的ObservableCollection ) 第三个必须与第二个菜单的SelectedItem属性绑定。 (所以它有一个类Equipes的ObservableCollection ) 现在,这是工作代码: 然后我可以根据菜单的SelectedItem更改上下文的视图: 我的问题是如果我的菜单变成Usercontrol ,我似乎无法在lvMenu的菜单和ListView (我命名为: lvMenu )之间进行databinding 。 我虽然这样做很简单: 然后可以以相同的方式访问上下文: … lvMenu ( ListView )将其ItemsSource=”{Binding}”绑定到上下文。 有没有人知道如何做到这一点? (对不起我的英语不好)

从静态切换到viewmodel范例会导致属性从combobox中消失

我确信对不良行为有一个非常合乎逻辑的解释(我最有可能的原因)。 但由于无知,我不确定如何解决它。 这就是发生的事情。 当我绑定到静态资源时,将自动显示属性Name (它由重写的ToString实现开始提供)。 然后,我尝试将代码重写为MVVM模式,因此我将其更改为此。 试图明确地设置路径不起作用(没有任何改变,程序执行良好,但在列表中没有显示任何内容。(提示是我做错了,因为intellisense只建议AllOptions而不是Name作为Path的替代。 ) 因此,切换到视图模型会导致属性Name的文本消失。 在破解viewmodel的构造函数时,我可以看到所服务的元素数量(及其内容)是正确的,如下所示。 class Presenter { private IEnumerable _allOptions; public IEnumerable AllOptions => _allOptions.Where(element => true); public Presenter() { _allOptions = DataAccessor.GetStuff(); } } 我已经将viewmodel连接到视图,就像这样。 我可能错过了什么?! 编辑 我刚刚意识到绑定到组件的列表是空的 。 绑定不会发生。 我被展开的combobox欺骗了但是当我清空列表时,它似乎有一个默认的行数,它显示的是独立于添加元素的数量! 所以,问题是我的绑定没有设法绑定。 在博客中我看到博主视图模型实现了BindableBase 。 根据intellisense,我没有这样的课程。 是INotify ……相应的东西?

C#Textbox数据绑定与DataSet

我有一个TextBox ,我给它一个DataBinding ,如下所示: txtCompanyAddress.DataBindings.Add(“Text”, CompanyDetailsDataSet, “CompanyDetails.CompanyAddress”); 另外我在表单上添加了一个BindingManagerBase对象,如下所示: protected BindingManagerBase BindingManager { get { return this.BindingContext[CompanyDetailsDataSet, “CompanyDetails”]; } } 我的表单上有一个取消按钮,取消了更改。 当我更新txtCompanyAddress的值并点击取消时,我调用BindingManager.CancelCurrentEdit(); 但文本框值不会更改为旧值。 这是任何数据绑定问题吗?

绑定ComboBox中的NULL空项

如何在绑定的ComboBox有一个空项,它使用NULL作为插入或更新的值? 使用下面的代码,我可以手动添加其他行。 列inspector_id是FK关系的主键。 我必须设置inspector_id = -1 ,因为C#不允许int为null 。 但是,插入(或更新)失败,因为数据库中没有inspector_id: -1 。 private void ItemInfo_Load(object sender, EventArgs e) { // TODO: This line of code loads data into the ‘someDBDataSet.inspector’ table. You can move, or remove it, as needed. this.inspectorTableAdapter.ClearBeforeFill = false; someDBDataSet.inspectorRow newRow = this.someDBDataSet.inspector.NewinspectorRow(); newRow.inspector_id = -1; // Since an int in C# cannot […]

SQL 2 LINQ查询(由数据绑定调用)完全冻结WPF应用程序

今天早些时候,我正在寻找一个非常奇怪的错误…我最终将其追溯到似乎导致问题的原因。 原始报告可以在这里找到: 原始问题 细节已经改变,足以保证一个新问题。 有时看起来我的应用程序,并非所有时间,当它到达以下LINQ查询时冻结: using (NetworkDatabaseContext db = new NetworkDatabaseContext(UISession.ConnectionString)) { Ballast ballast = db.Ballasts.FirstOrDefault(b => b.NetworkId == UISession.NetworkId && b.ShortAddress == this.innerBallast.ShortAddress && b.ControllerSerial == this.controllerSerial); 这就是它的样子: 没有回应http://sofzh.miximages.com/c%23/www.freeimagehosting.net 大部分时间这种方法都很好……但是时不时会锁定。 此代码是BallastListItem类的一部分。 此类的项目绑定到页面上的ListBox: 代码是DisplayName属性getter的一部分: public string DisplayName { get { using (NetworkDatabaseContext db = new NetworkDatabaseContext(UISession.ConnectionString)) { Ballast ballast = db.Ballasts.FirstOrDefault(b => b.NetworkId == UISession.NetworkId […]