Why is sum of values of an edge detection filter zero? Usually the filters for detecting edges have the sum of all the values in the filter matrix equal to 0.
For example: [-1 -2 -1, 0 0 0, 1 2 1].

Why is it so ?
An edge detection filter is, by definition, a high-pass filter.  It is looking for quick changes (i.e. high frequencies), not slow trends.  Thus, a good edge detection filter will have a response of 0 at DC.  A FIR filter whose taps sum to 0 has a response of 0 at DC.