A bit about the 3rd state of checkbox...
A checkbox may have only two values - on or off, and that's by design, however when you bind a checkbox to a database field, that nullable, you may get confused by the visual representation of that NULL value (originally similar to unchecked). So some came up with the idea to introduce a 3rd state (the grey one) to visualize the NULL value as something different from unchecked... In lot of cases it used when the checkbox is mandatory...
To add this - built in checkbox has no functionality to select the 3rd state via UI (for all the reasons) so you will have to write your own handling of it...
So after all it may not be the perfect UI for you...
However... It is doable...
But you can not check Checked property in a 3-state checkbox, but you have to use
CheckState[
^] property instead (and manage it from code)...