When you write something similar to:
public struct SomeStruct
public event SomeDelegate SortDirectionChanged;
public delegate void SomeDelegate(SomeInfo input);
then SortDirectionChanged event will always be null.
So when you try to set a delegate to the event like this:
var sth = new SomeStruct();
sth.SortDirectionChanged += SomeMethodServingEventCall;
SortDirectionChanged will be null when you'll try to pass on the struct. (when you check it with a debugger right after the assignment it will appear to be ok – strange). Use class instead.