public int Compare(object a, object b) { try { var a1 = a as ListViewItem; var b1 = b as ListViewItem; var a2 = a1.Content as ChatEventDisplayInfo; var b2 = b1.Content as ChatEventDisplayInfo; var x = Ascending ? a2 : b2; var y = Ascending ? b2 : a2; switch (_propertyName) { case "GameStateIndex": return(x.GameStateIndex.CompareTo(y.GameStateIndex)); case "Time": return(App.CompareTimeStrings(y.Time, x.Time)); case "TeamMessage": return(x.TeamMessage.CompareTo(y.TeamMessage)); case "Player": return(y.Player.CompareTo(x.Player)); case "Message": return(y.Message.CompareTo(x.Message)); default: return(0); } } catch (Exception) { return(0); } }