[Mono-bugs] [Bug 664837] New: Binding to a list of objects that implement IEditableObject doesn't work correctly
bugzilla_noreply at novell.com
bugzilla_noreply at novell.com
Sun Jan 16 17:58:20 EST 2011
https://bugzilla.novell.com/show_bug.cgi?id=664837
https://bugzilla.novell.com/show_bug.cgi?id=664837#c0
Summary: Binding to a list of objects that implement
IEditableObject doesn't work correctly
Classification: Mono
Product: Mono: Class Libraries
Version: 2.6.x
Platform: x86
OS/Version: Windows 7
Status: NEW
Severity: Normal
Priority: P5 - None
Component: Windows.Forms
AssignedTo: mono-bugs at lists.ximian.com
ReportedBy: cvolzke at live.com.au
QAContact: mono-bugs at lists.ximian.com
Found By: ---
Blocker: ---
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US)
AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1036 Safari/532.5
Binding to a list of objects that implement IEditableObject doesn't work
correctly.
Edited values are not written back to the data source.
Reproducible: Always
Steps to Reproduce:
[Test]
public void Test_BindingToIEditableObject()
{
BindingList<TestEditableObject> list = new
BindingList<TestEditableObject>();
list.AddNew();
TextBox textBox = new TextBox();
textBox.DataBindings().Add("Text", list, "List.IntProperty");
Form.Controls.Add(textBox);
Form.Show();
Application.DoEvents();
var detail = list[0].List.AddNew();
detail.IntProperty = 5;
AssertEquals("5", textBox.Text, "TextBox bound correctly");
}
Form form;
Form Form
{
get { return form ?? (form = new Form()); }
}
class TestEditableObject : IEditableObject
{
BindingList<TestRelatedEditableObject> list;
public BindingList<TestRelatedEditableObject> List
{
get { return list ?? (list = new
BindingList<TestRelatedEditableObject>()); }
}
void IEditableObject.BeginEdit() { }
void IEditableObject.CancelEdit() { }
void IEditableObject.EndEdit() { }
}
class TestDataSourceWithRelatedObjects
{
public event EventHandler ObjPropertyChanged;
TestDataSource objProperty;
public TestDataSource ObjProperty
{
get { return objProperty; }
set
{
objProperty = value;
if (ObjPropertyChanged != null)
{
ObjPropertyChanged(this, EventArgs.Empty);
}
}
}
public BindingList<TestDataSource> List { get; set; }
}
class TestRelatedEditableObject : IEditableObject, INotifyPropertyChanged
{
public event EventHandler IntPropertyChanged;
int intProperty;
public int IntProperty
{
get { return intProperty; }
set
{
intProperty = value;
if (IntPropertyChanged != null)
{
IntPropertyChanged(this, EventArgs.Empty);
}
if (PropertyChanged != null)
{
PropertyChanged(this, new
PropertyChangedEventArgs("IntProperty"));
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
void IEditableObject.BeginEdit() { }
void IEditableObject.CancelEdit() { }
void IEditableObject.EndEdit() { }
}
class TestDataSource
{
public event EventHandler IntPropertyChanged;
public const int IntPropertyDefaultValue = 5;
int intProperty = IntPropertyDefaultValue;
public int IntProperty
{
get { return intProperty; }
set
{
intProperty = value;
if (IntPropertyChanged != null)
{
IntPropertyChanged(this, EventArgs.Empty);
}
}
}
}
Actual Results:
Unit test fails
Expected Results:
Unit test should pass, as it does on ms.net.
To fix, remove CurrencyManager.editing field..
--
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.
More information about the mono-bugs
mailing list