Skip to content

Commit 694713a

Browse files
Merge pull request #12 from ShawnLaMountain/main
Added BindableObject
2 parents 7420dd2 + efed0a5 commit 694713a

File tree

3 files changed

+38
-2
lines changed

3 files changed

+38
-2
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ A simple C# repository containing a few basic useful Thread-Safe Objects.
3232
- ObjectExtention
3333
- HelperClasses
3434
- ThreadHelper
35+
- Objects
36+
- BindableObject
37+
- ThreadObject
3538

3639
----
3740

src/ThunderDesign.Net-PCL.Threading/DataObjects/BindableDataObject.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System.ComponentModel;
2+
using System.Runtime.CompilerServices;
23
using ThunderDesign.Net.Threading.Extentions;
34
using ThunderDesign.Net.Threading.Interfaces;
45

@@ -10,15 +11,19 @@ public class BindableDataObject<Key> : DataObject<Key>, IBindableDataObject<Key>
1011
public event PropertyChangedEventHandler PropertyChanged;
1112
#endregion
1213

14+
#region properties
15+
protected virtual bool WaitWhenNotifying => false;
16+
#endregion
17+
1318
#region methods
1419
protected override void SetId(Key value)
1520
{
1621
this.SetProperty(ref _Id, value, _Locker, true, nameof(Id));
1722
}
1823

19-
public virtual void OnPropertyChanged(string propertyName)
24+
public virtual void OnPropertyChanged([CallerMemberName] string propertyName = "")
2025
{
21-
this.NotifyPropertyChanged(PropertyChanged, propertyName);
26+
this.NotifyPropertyChanged(PropertyChanged, propertyName, WaitWhenNotifying);
2227
}
2328
#endregion
2429
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.ComponentModel;
4+
using System.Runtime.CompilerServices;
5+
using System.Text;
6+
using ThunderDesign.Net.Threading.Extentions;
7+
using ThunderDesign.Net.Threading.Interfaces;
8+
9+
namespace ThunderDesign.Net.Threading.Objects
10+
{
11+
public class BindableObject : ThreadObject, IBindableObject
12+
{
13+
#region event handlers
14+
public event PropertyChangedEventHandler PropertyChanged;
15+
#endregion
16+
17+
#region properties
18+
protected virtual bool WaitWhenNotifying => false;
19+
#endregion
20+
21+
#region methods
22+
public virtual void OnPropertyChanged([CallerMemberName] string propertyName = "")
23+
{
24+
this.NotifyPropertyChanged(PropertyChanged, propertyName, WaitWhenNotifying);
25+
}
26+
#endregion
27+
}
28+
}

0 commit comments

Comments
 (0)