SPI as implemented in NETMF takes an array and will transfer the entire array at one time and then toggle the Chip Select line. I have never heard of a case of someone wanting to transfer less than a full byte over SPI. To do that you could try shifting the data within the byte so that after a byte wide shift the four bits you are interested in are still in the target device register.
the 12-bit is how many bits of resolution the DAC is, and can have NOTHING to do with the number of bits you need to communicate to it.
With SPI, you HAVE to look at the datasheet of the device. A quick look on page 23 of the data sheet for that device shows 16-bit transfers. You’re worried about nothing.
With the MCP DAC family you need to transfer 16 bits for one sample.
4 bits for the command + 12 bits for the sample… give a look at the spec in the serial communication part…
It’s clear and easy to understand.