That's because the View matrix transforms objects from world space to camera space. It is not the transformation that would place the camera at its position. This would be the inverse transformation.
Consider a simple 2D coordinate system:
The black coordinate system is the world system. The blue one is the camera with its system. The green arrow is the translation vector of the camera in world space.
The View matrix would put the camera from its current position back to the origin. The first step is a rotation, so that the according axes of both systems point in the same direction:
This is achieved by the other entries of the matrix (m_11 to m_33).
Now there is one translation left. But the translation vector is transformed. Fortunately, we know, how. The translation vector is equal to the camera position (Note, that DirectX uses transposed matrices. In order to show the maths behind, I transposed them back):
/ xAxis.x xAxis.y xAxis.z ...\ / camPos.X \ / camPos.x * xAxis.x + camPos.Y * xAxis.y + camPos.z * xAxis.z \
| yAxis.x yAxis.y yAxis.z ...| | camPos.Y | | camPos.x * yAxis.x + camPos.Y * yAxis.y + camPos.z * yAxis.z |
| zAxis.x zAxis.y zAxis.z ...| * | camPos.Z | = | camPos.x * zAxis.x + camPos.Y * zAxis.y + camPos.z * zAxis.z |
\ 0 0 0 .../ \ 0 / \ 0 /
And if you have a look at the result:
camPos.X * xAxis.x + xamPos.Y * xAxis.y + camPos.z * xAxis.z
then you see that this is equal to
dot ( camPos, xAxis)
Concluding, the dot product is used to compensate the rotation. Without it, the camera would be somewhat displaced (in the example too far top right).