You are trying to solve a problem on the client side using server-side technology. Create a viewmodel and put your data in an ObservableCollection and implement the INotifyPropertyChanged interface for objects, as described here
This way you separate the Dirty () logic from NHibernate and make it a "clean" WPF / client problem. The link in both answers describes how you can track additions and deletions to / from the collection, as well as changes to the properties of elements.
When you are ready to save your data, you transfer the dirty records to NHibernate.
source share