I can see that the digest value and signature are incorrect.
This is usually because of incorrect whitespace or the canonicalisation method.
The example code only verifies the signature. I'm convinced this includes the verification digest value. These are 2 separate steps.
I don't have a C# environment so I cannot verify the actual input of the validation.
I'm interested in the input for this statement:
signer.LoadXml((XmlElement)nodeList[0]);