ObservableCollection not updating though I INotifyPropertyChanged is implementedHow do I update the GUI from another thread?Implementing INotifyPropertyChanged - does a better way exist?ObservableCollection not noticing when Item in it changes (even with INotifyPropertyChanged)What is the use of ObservableCollection in .net?Difference between ObservableCollection and BindingListDatabinding issue with stopwatched elapsedWpf-Datagrid and ObservableCollection-AutoGenerateColumns?WPF Binding not updating from DispatcherTimerListView does not update when source is changed - Even though I implemented PropertyChangedObservable.Interval not updating UI with expected frequency
Radix2 Fast Fourier Transform implemented in C++
9 hrs long transit in DEL
What allows us to use imaginary numbers?
Starships without computers?
Are there categories whose internal hom is somewhat 'exotic'?
Unsolved Problems due to Lack of Computational Power
!I!n!s!e!r!t! !b!e!t!w!e!e!n!
The Lucky House
Installing the original OS X version onto a Mac?
Atmospheric methane to carbon
Why is the name Bergson pronounced like Berksonne?
How does the illumination of the sky from the sun compare to that of the moon?
What's the point of writing that I know will never be used or read?
"A y'vama acquires herself through chalitza", really?
Can the front glass be repaired of a broken lens?
Installing certbot - error - "nothing provides pyparsing"
What security risks does exposing the size of the plaintext entail?
How to render "have ideas above his station" into German
Build a mob of suspiciously happy lenny faces ( ͡° ͜ʖ ͡°)
Why do balloons get cold when they deflate?
When does The Truman Show take place?
Why did St. Jerome use "virago" in Gen. 2:23?
Testing control surfaces pre flight; what feedback does pilot recieve?
Can I submit a paper computer science conference using an alias if using my real name can cause legal trouble in my original country
ObservableCollection not updating though I INotifyPropertyChanged is implemented
How do I update the GUI from another thread?Implementing INotifyPropertyChanged - does a better way exist?ObservableCollection not noticing when Item in it changes (even with INotifyPropertyChanged)What is the use of ObservableCollection in .net?Difference between ObservableCollection and BindingListDatabinding issue with stopwatched elapsedWpf-Datagrid and ObservableCollection-AutoGenerateColumns?WPF Binding not updating from DispatcherTimerListView does not update when source is changed - Even though I implemented PropertyChangedObservable.Interval not updating UI with expected frequency
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I need to display in a DataGrid a set of bit states as received from external source. For this I use an ObservableCollection like this
public class UpdateIO : INotifyPropertyChanged
public static ObservableCollection<IObitDetails> PlcCommonOutputs = new ObservableCollection<IObitDetails>();
My IObitDetails class is
public class IObitDetails : INotifyPropertyChanged
bool _bitValue;
public string BitGroup get; set;
public string BitText get; set;
public short CIOaddress get; set;
public short BitPosition get; set;
public bool BitValue
get return _bitValue;
set SetField(ref _bitValue, value);
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
protected bool SetField<T>(ref T field, T value,
[CallerMemberName] string propertyName = null)
if (EqualityComparer<T>.Default.Equals(field, value))
return false;
field = value;
OnPropertyChanged(propertyName);
return true;
public IObitDetails(string bg, bool bv, string bt, short adr, short pos)
BitGroup = bg;
BitValue = bv;
BitText = bt;
CIOaddress = adr;
BitPosition = pos;
Next I created the collection
PlcCommonOutputs.Add(new IObitDetails("CO", oCommonOpLampRed,"Op. Red", 0x0001, obitCommonOpLampRed));
PlcCommonOutputs.Add(new IObitDetails("CO", oCommonOpLampGreen,"Op. Green", 0x0001, obitCommonOpLampGreen));
PlcCommonOutputs.Add(new IObitDetails("CO", oCommonMuteA,"MuteA", 0x0001, obitCommonMuteA));
PlcCommonOutputs.Add(new IObitDetails("CO", oCommonMuteB,"MuteB", 0x0001, obitCommonMuteB));
...
Here BitPositions are declared as:
private const short obitCommonOpLampRed = 0;
private const short obitCommonOpLampGreen = 1;
private const short obitCommonMuteA = 2;
private const short obitCommonMuteB = 3;
...
Each bit is a property which is modified when I read (in a polling thread) a port and store in oCommonOutputsPost:
private short _oCommonOutputsPort;
public short oCommonOutputsPort
get return _oCommonOutputsPort;
set
SetField(ref _oCommonOutputsPort, value);
oCommonOpLampRed = (oCommonOutputsPort & (1 << obitCommonOpLampRed)) != 0;
oCommonOpLampGreen = (oCommonOutputsPort & (1 << obitCommonOpLampGreen)) != 0;
oCommonMuteA = (oCommonOutputsPort & (1 << obitCommonMuteA)) != 0;
oCommonMuteB = (oCommonOutputsPort & (1 << obitCommonMuteB)) != 0;
private bool _oCommonOpLampRed;
public bool oCommonOpLampRed
get return _oCommonOpLampRed;
set SetField(ref _oCommonOpLampRed, value);
private bool _oCommonOpLampGreen;
public bool oCommonOpLampGreen
get return _oCommonOpLampGreen;
set SetField(ref _oCommonOpLampGreen, value);
}
private bool _oCommonMuteA;
public bool oCommonMuteA
get return _oCommonMuteA;
set SetField(ref _oCommonMuteA, value);
private bool _oCommonMuteB;
public bool oCommonMuteB
get return _oCommonMuteB;
set SetField(ref _oCommonMuteB, value);
...
Whenever I read a new port value, the bits are set/reset (I see that the bit properties are modified correctly).
But the ObservableCollection (PlcCommonOutputs) is not changed.
If I change by hand in debugger the corresponding BitValue(s) in the collection they are seen in the UI (so I do not include any xaml).
Is there a way this is done without increasing code complexity to much?
c# observablecollection
add a comment |
I need to display in a DataGrid a set of bit states as received from external source. For this I use an ObservableCollection like this
public class UpdateIO : INotifyPropertyChanged
public static ObservableCollection<IObitDetails> PlcCommonOutputs = new ObservableCollection<IObitDetails>();
My IObitDetails class is
public class IObitDetails : INotifyPropertyChanged
bool _bitValue;
public string BitGroup get; set;
public string BitText get; set;
public short CIOaddress get; set;
public short BitPosition get; set;
public bool BitValue
get return _bitValue;
set SetField(ref _bitValue, value);
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
protected bool SetField<T>(ref T field, T value,
[CallerMemberName] string propertyName = null)
if (EqualityComparer<T>.Default.Equals(field, value))
return false;
field = value;
OnPropertyChanged(propertyName);
return true;
public IObitDetails(string bg, bool bv, string bt, short adr, short pos)
BitGroup = bg;
BitValue = bv;
BitText = bt;
CIOaddress = adr;
BitPosition = pos;
Next I created the collection
PlcCommonOutputs.Add(new IObitDetails("CO", oCommonOpLampRed,"Op. Red", 0x0001, obitCommonOpLampRed));
PlcCommonOutputs.Add(new IObitDetails("CO", oCommonOpLampGreen,"Op. Green", 0x0001, obitCommonOpLampGreen));
PlcCommonOutputs.Add(new IObitDetails("CO", oCommonMuteA,"MuteA", 0x0001, obitCommonMuteA));
PlcCommonOutputs.Add(new IObitDetails("CO", oCommonMuteB,"MuteB", 0x0001, obitCommonMuteB));
...
Here BitPositions are declared as:
private const short obitCommonOpLampRed = 0;
private const short obitCommonOpLampGreen = 1;
private const short obitCommonMuteA = 2;
private const short obitCommonMuteB = 3;
...
Each bit is a property which is modified when I read (in a polling thread) a port and store in oCommonOutputsPost:
private short _oCommonOutputsPort;
public short oCommonOutputsPort
get return _oCommonOutputsPort;
set
SetField(ref _oCommonOutputsPort, value);
oCommonOpLampRed = (oCommonOutputsPort & (1 << obitCommonOpLampRed)) != 0;
oCommonOpLampGreen = (oCommonOutputsPort & (1 << obitCommonOpLampGreen)) != 0;
oCommonMuteA = (oCommonOutputsPort & (1 << obitCommonMuteA)) != 0;
oCommonMuteB = (oCommonOutputsPort & (1 << obitCommonMuteB)) != 0;
private bool _oCommonOpLampRed;
public bool oCommonOpLampRed
get return _oCommonOpLampRed;
set SetField(ref _oCommonOpLampRed, value);
private bool _oCommonOpLampGreen;
public bool oCommonOpLampGreen
get return _oCommonOpLampGreen;
set SetField(ref _oCommonOpLampGreen, value);
}
private bool _oCommonMuteA;
public bool oCommonMuteA
get return _oCommonMuteA;
set SetField(ref _oCommonMuteA, value);
private bool _oCommonMuteB;
public bool oCommonMuteB
get return _oCommonMuteB;
set SetField(ref _oCommonMuteB, value);
...
Whenever I read a new port value, the bits are set/reset (I see that the bit properties are modified correctly).
But the ObservableCollection (PlcCommonOutputs) is not changed.
If I change by hand in debugger the corresponding BitValue(s) in the collection they are seen in the UI (so I do not include any xaml).
Is there a way this is done without increasing code complexity to much?
c# observablecollection
3
ObservableCollection only fires events when the collection is changed (e.g. elements added, removed, moved etc), not when individual elements change.
– rpaulin56
Mar 27 at 14:10
You may want to look at BindingList instead of ObservableCollection
– Jeff Anderson
Mar 27 at 14:15
add a comment |
I need to display in a DataGrid a set of bit states as received from external source. For this I use an ObservableCollection like this
public class UpdateIO : INotifyPropertyChanged
public static ObservableCollection<IObitDetails> PlcCommonOutputs = new ObservableCollection<IObitDetails>();
My IObitDetails class is
public class IObitDetails : INotifyPropertyChanged
bool _bitValue;
public string BitGroup get; set;
public string BitText get; set;
public short CIOaddress get; set;
public short BitPosition get; set;
public bool BitValue
get return _bitValue;
set SetField(ref _bitValue, value);
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
protected bool SetField<T>(ref T field, T value,
[CallerMemberName] string propertyName = null)
if (EqualityComparer<T>.Default.Equals(field, value))
return false;
field = value;
OnPropertyChanged(propertyName);
return true;
public IObitDetails(string bg, bool bv, string bt, short adr, short pos)
BitGroup = bg;
BitValue = bv;
BitText = bt;
CIOaddress = adr;
BitPosition = pos;
Next I created the collection
PlcCommonOutputs.Add(new IObitDetails("CO", oCommonOpLampRed,"Op. Red", 0x0001, obitCommonOpLampRed));
PlcCommonOutputs.Add(new IObitDetails("CO", oCommonOpLampGreen,"Op. Green", 0x0001, obitCommonOpLampGreen));
PlcCommonOutputs.Add(new IObitDetails("CO", oCommonMuteA,"MuteA", 0x0001, obitCommonMuteA));
PlcCommonOutputs.Add(new IObitDetails("CO", oCommonMuteB,"MuteB", 0x0001, obitCommonMuteB));
...
Here BitPositions are declared as:
private const short obitCommonOpLampRed = 0;
private const short obitCommonOpLampGreen = 1;
private const short obitCommonMuteA = 2;
private const short obitCommonMuteB = 3;
...
Each bit is a property which is modified when I read (in a polling thread) a port and store in oCommonOutputsPost:
private short _oCommonOutputsPort;
public short oCommonOutputsPort
get return _oCommonOutputsPort;
set
SetField(ref _oCommonOutputsPort, value);
oCommonOpLampRed = (oCommonOutputsPort & (1 << obitCommonOpLampRed)) != 0;
oCommonOpLampGreen = (oCommonOutputsPort & (1 << obitCommonOpLampGreen)) != 0;
oCommonMuteA = (oCommonOutputsPort & (1 << obitCommonMuteA)) != 0;
oCommonMuteB = (oCommonOutputsPort & (1 << obitCommonMuteB)) != 0;
private bool _oCommonOpLampRed;
public bool oCommonOpLampRed
get return _oCommonOpLampRed;
set SetField(ref _oCommonOpLampRed, value);
private bool _oCommonOpLampGreen;
public bool oCommonOpLampGreen
get return _oCommonOpLampGreen;
set SetField(ref _oCommonOpLampGreen, value);
}
private bool _oCommonMuteA;
public bool oCommonMuteA
get return _oCommonMuteA;
set SetField(ref _oCommonMuteA, value);
private bool _oCommonMuteB;
public bool oCommonMuteB
get return _oCommonMuteB;
set SetField(ref _oCommonMuteB, value);
...
Whenever I read a new port value, the bits are set/reset (I see that the bit properties are modified correctly).
But the ObservableCollection (PlcCommonOutputs) is not changed.
If I change by hand in debugger the corresponding BitValue(s) in the collection they are seen in the UI (so I do not include any xaml).
Is there a way this is done without increasing code complexity to much?
c# observablecollection
I need to display in a DataGrid a set of bit states as received from external source. For this I use an ObservableCollection like this
public class UpdateIO : INotifyPropertyChanged
public static ObservableCollection<IObitDetails> PlcCommonOutputs = new ObservableCollection<IObitDetails>();
My IObitDetails class is
public class IObitDetails : INotifyPropertyChanged
bool _bitValue;
public string BitGroup get; set;
public string BitText get; set;
public short CIOaddress get; set;
public short BitPosition get; set;
public bool BitValue
get return _bitValue;
set SetField(ref _bitValue, value);
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
protected bool SetField<T>(ref T field, T value,
[CallerMemberName] string propertyName = null)
if (EqualityComparer<T>.Default.Equals(field, value))
return false;
field = value;
OnPropertyChanged(propertyName);
return true;
public IObitDetails(string bg, bool bv, string bt, short adr, short pos)
BitGroup = bg;
BitValue = bv;
BitText = bt;
CIOaddress = adr;
BitPosition = pos;
Next I created the collection
PlcCommonOutputs.Add(new IObitDetails("CO", oCommonOpLampRed,"Op. Red", 0x0001, obitCommonOpLampRed));
PlcCommonOutputs.Add(new IObitDetails("CO", oCommonOpLampGreen,"Op. Green", 0x0001, obitCommonOpLampGreen));
PlcCommonOutputs.Add(new IObitDetails("CO", oCommonMuteA,"MuteA", 0x0001, obitCommonMuteA));
PlcCommonOutputs.Add(new IObitDetails("CO", oCommonMuteB,"MuteB", 0x0001, obitCommonMuteB));
...
Here BitPositions are declared as:
private const short obitCommonOpLampRed = 0;
private const short obitCommonOpLampGreen = 1;
private const short obitCommonMuteA = 2;
private const short obitCommonMuteB = 3;
...
Each bit is a property which is modified when I read (in a polling thread) a port and store in oCommonOutputsPost:
private short _oCommonOutputsPort;
public short oCommonOutputsPort
get return _oCommonOutputsPort;
set
SetField(ref _oCommonOutputsPort, value);
oCommonOpLampRed = (oCommonOutputsPort & (1 << obitCommonOpLampRed)) != 0;
oCommonOpLampGreen = (oCommonOutputsPort & (1 << obitCommonOpLampGreen)) != 0;
oCommonMuteA = (oCommonOutputsPort & (1 << obitCommonMuteA)) != 0;
oCommonMuteB = (oCommonOutputsPort & (1 << obitCommonMuteB)) != 0;
private bool _oCommonOpLampRed;
public bool oCommonOpLampRed
get return _oCommonOpLampRed;
set SetField(ref _oCommonOpLampRed, value);
private bool _oCommonOpLampGreen;
public bool oCommonOpLampGreen
get return _oCommonOpLampGreen;
set SetField(ref _oCommonOpLampGreen, value);
}
private bool _oCommonMuteA;
public bool oCommonMuteA
get return _oCommonMuteA;
set SetField(ref _oCommonMuteA, value);
private bool _oCommonMuteB;
public bool oCommonMuteB
get return _oCommonMuteB;
set SetField(ref _oCommonMuteB, value);
...
Whenever I read a new port value, the bits are set/reset (I see that the bit properties are modified correctly).
But the ObservableCollection (PlcCommonOutputs) is not changed.
If I change by hand in debugger the corresponding BitValue(s) in the collection they are seen in the UI (so I do not include any xaml).
Is there a way this is done without increasing code complexity to much?
c# observablecollection
c# observablecollection
asked Mar 27 at 13:57
Ivan ZlatarskiIvan Zlatarski
1
1
3
ObservableCollection only fires events when the collection is changed (e.g. elements added, removed, moved etc), not when individual elements change.
– rpaulin56
Mar 27 at 14:10
You may want to look at BindingList instead of ObservableCollection
– Jeff Anderson
Mar 27 at 14:15
add a comment |
3
ObservableCollection only fires events when the collection is changed (e.g. elements added, removed, moved etc), not when individual elements change.
– rpaulin56
Mar 27 at 14:10
You may want to look at BindingList instead of ObservableCollection
– Jeff Anderson
Mar 27 at 14:15
3
3
ObservableCollection only fires events when the collection is changed (e.g. elements added, removed, moved etc), not when individual elements change.
– rpaulin56
Mar 27 at 14:10
ObservableCollection only fires events when the collection is changed (e.g. elements added, removed, moved etc), not when individual elements change.
– rpaulin56
Mar 27 at 14:10
You may want to look at BindingList instead of ObservableCollection
– Jeff Anderson
Mar 27 at 14:15
You may want to look at BindingList instead of ObservableCollection
– Jeff Anderson
Mar 27 at 14:15
add a comment |
1 Answer
1
active
oldest
votes
An easy fix for this, would be to raise propertychanged when in your setter for the values you would want to update. An example of this would be:
private bool _oCommonMuteA;
public bool oCommonMuteA
get return _oCommonMuteA;
set
SetField(ref _oCommonMuteA, value);
OnPropertyChanged(nameof(oCommonMuteA));
But I already have OnPropertyChanged in my SetField method before it.
– Ivan Zlatarski
Mar 27 at 18:42
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55379025%2fobservablecollection-not-updating-though-i-inotifypropertychanged-is-implemented%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
An easy fix for this, would be to raise propertychanged when in your setter for the values you would want to update. An example of this would be:
private bool _oCommonMuteA;
public bool oCommonMuteA
get return _oCommonMuteA;
set
SetField(ref _oCommonMuteA, value);
OnPropertyChanged(nameof(oCommonMuteA));
But I already have OnPropertyChanged in my SetField method before it.
– Ivan Zlatarski
Mar 27 at 18:42
add a comment |
An easy fix for this, would be to raise propertychanged when in your setter for the values you would want to update. An example of this would be:
private bool _oCommonMuteA;
public bool oCommonMuteA
get return _oCommonMuteA;
set
SetField(ref _oCommonMuteA, value);
OnPropertyChanged(nameof(oCommonMuteA));
But I already have OnPropertyChanged in my SetField method before it.
– Ivan Zlatarski
Mar 27 at 18:42
add a comment |
An easy fix for this, would be to raise propertychanged when in your setter for the values you would want to update. An example of this would be:
private bool _oCommonMuteA;
public bool oCommonMuteA
get return _oCommonMuteA;
set
SetField(ref _oCommonMuteA, value);
OnPropertyChanged(nameof(oCommonMuteA));
An easy fix for this, would be to raise propertychanged when in your setter for the values you would want to update. An example of this would be:
private bool _oCommonMuteA;
public bool oCommonMuteA
get return _oCommonMuteA;
set
SetField(ref _oCommonMuteA, value);
OnPropertyChanged(nameof(oCommonMuteA));
answered Mar 27 at 14:27
DanielDaniel
367 bronze badges
367 bronze badges
But I already have OnPropertyChanged in my SetField method before it.
– Ivan Zlatarski
Mar 27 at 18:42
add a comment |
But I already have OnPropertyChanged in my SetField method before it.
– Ivan Zlatarski
Mar 27 at 18:42
But I already have OnPropertyChanged in my SetField method before it.
– Ivan Zlatarski
Mar 27 at 18:42
But I already have OnPropertyChanged in my SetField method before it.
– Ivan Zlatarski
Mar 27 at 18:42
add a comment |
Got a question that you can’t ask on public Stack Overflow? Learn more about sharing private information with Stack Overflow for Teams.
Got a question that you can’t ask on public Stack Overflow? Learn more about sharing private information with Stack Overflow for Teams.
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55379025%2fobservablecollection-not-updating-though-i-inotifypropertychanged-is-implemented%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
3
ObservableCollection only fires events when the collection is changed (e.g. elements added, removed, moved etc), not when individual elements change.
– rpaulin56
Mar 27 at 14:10
You may want to look at BindingList instead of ObservableCollection
– Jeff Anderson
Mar 27 at 14:15