.net – 为什么当我在父对象上引发通知事件时,为什么Windows For
好的,所以这里是我的问题的一些上下文,写为伪C#代码(随意指出任何错误):(你可以直接跳转到stacktrace并稍后阅读上下文)
public class SomeForm { private _model = new ViewModelClass public void new() { // Normal Winforms init omitted ViewModelClassBindingSource.DataSource = _model; SomeControl1.SetModel(_model); } } public class SomeControl { private _model = new ViewModelClass internal void SetModel(ViewModelClass model) { _model = model; ViewModelClassBindingSource.DataSource = model; ViewModelClassBindingSource.ResetBindings(true); } } public class ComplexObject : IPropertyChanging,IPropertyChanged { public property bool BoolProp {get; set;} } public class ViewModelClass : IPropertyChanged { property IList<ComplexObject> ComplexObjects {get;} property ComplexObject SelectedComplexObject {get; set;} property Object SomethingNotNecessarilyRelated {get; set;} private void NotifyPropertyChanged(string propName) { PropertyChanged(this,new PropertyChangedEventArgs(propName)); } } 这些类中的所有属性都在Visual Studio 2008 Windows窗体设计器,SomeForm或SomeControl类中进行数据绑定. (ComplexObject.BoolProp在两者中都是数据绑定的).不要犹豫,就更多的问题询问上下文. 问题:当我在ViewModelClass类中进行一些(通知)通知时,使用这种堆栈跟踪,可以将ComplexObject.BoolProp设置为false: System.dll!System.ComponentModel.ReflectPropertyDescriptor.SetValue(object component = "Object Exposed in 'SelectedComplexObject'",object value = false) + 0x124 bytes System.Windows.Forms.dll!System.Windows.Forms.BindToObject.SetValue(object value) + 0x5d bytes System.Windows.Forms.dll!System.Windows.Forms.Binding.PullData(bool reformat,bool force) + 0x15a bytes System.Windows.Forms.dll!System.Windows.Forms.BindingManagerBase.PullData(out bool success = true) + 0x6e bytes System.Windows.Forms.dll!System.Windows.Forms.BindingSource.ParentCurrencyManager_CurrentItemChanged(object sender = {System.Windows.Forms.CurrencyManager},System.EventArgs e) + 0x54 bytes [Native to Managed Transition] [Managed to Native Transition] System.Windows.Forms.dll!System.Windows.Forms.CurrencyManager.OnCurrentItemChanged(System.EventArgs e) + 0x17 bytes System.Windows.Forms.dll!System.Windows.Forms.CurrencyManager.List_ListChanged(object sender,System.ComponentModel.ListChangedEventArgs e) + 0x3bc bytes System.Windows.Forms.dll!System.Windows.Forms.BindingSource.OnListChanged(System.ComponentModel.ListChangedEventArgs e) + 0x7e bytes System.Windows.Forms.dll!System.Windows.Forms.BindingSource.InnerList_ListChanged(object sender,System.ComponentModel.ListChangedEventArgs e) + 0x2e bytes System.dll!System.ComponentModel.BindingList<System.__Canon>.OnListChanged(System.ComponentModel.ListChangedEventArgs e) + 0x17 bytes System.dll!System.ComponentModel.BindingList<MyCompany.ViewModelClass>.Child_PropertyChanged(object sender,System.ComponentModel.PropertyChangedEventArgs e) + 0x176 bytes [Native to Managed Transition] [Managed to Native Transition] MyCompany.Gui.exe!MyCompany.ViewModelClass.NotifyPropertyChanged(String propertyName = "SomethingNotNecessarilyRelated") Line 437 + 0x3c bytes Basic 为什么程序想要将SomeBool设置为false?我怎么能防止呢?
我在Stack Overflow中的第一个问题是Windows窗体应用程序中的一个字段,其中包含一个意想不到的值,就像你的.解决方案是等待窗体加载事件被触发以设置窗体的GUI元素.
我将推迟设置_model(包括使用新建构造)和其他GUI元素,直到在窗体加载事件的处理程序中. 如何: 在Visual Studio中添加表单加载处理程序: >在图形视图中打开窗体(例如,在解决方案资源管理器中双击SomeForm.cs) 将设置代码移动到SomeForm_Load: private void SomeForm_Load(object aSender,EventArgs anEvent) { _model = new ViewModelClass; ViewModelClassBindingSource.DataSource = _model; SomeControl1.SetModel(_model); } 从_model的声明中删除“= new ViewModelClass”. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- .net – Windows每秒执行一次线程切换的频率是多少?
- 02、Windows Server 2003的域账户管(01)
- 如何使用Windows API以编程方式调整窗口大小并移动窗口?
- Windows中的C是否有简单的Program Files / Program Files(x
- 窗口 – 使用具有多个文件类型的forfile用于搜索掩码?
- windows server 2008/2012安装php iis7 mysql环境搭建教程
- Windows Service Plus GUI / C#
- 有时 – 无法构建Windows Azure云服务 – 对象引用未设置为
- G为64位Windows
- 窗口 – 更改为从Env变量路径中删除路径
- windows-update – 域中的非MS程序更新
- 在Windows操作系统的文件管理器中集成Azure DevO
- windows资源管理器(只能看,不能用)
- Windows 2003与Windows 2008中的Java Web应用程序
- 动态按钮图标Windows应用程序
- windows-server-2008 – 是否可以为服务器上的单
- windows-server-2012 – Windows 8.1和Windows S
- windows-server-2008-r2 – 在Windows Server 20
- windows – 如何在窗口上设置HICON(.ICO有多种尺
- 如何在NTFS中减小文件夹索引文件的大??小?