The reason this does not work, and the reason you cannot get it working, is related to the sensitivity of ClearType to what it does on top. In order for ClearType to look correct, it essentially has to do alpha blending in each component. That is, a separate alpha value for red, green and blue (usually alpha refers to all 3). This means that ClearType absolutely needs to be displayed in a bitmap that is already opaque (all alpha values ββare 255) (you will notice that the header headers still have ClearType, but some top-secret tricks are used for this).
The next step to understanding this is that WPF acts on the first render to an off-screen bitmap and then combines with what is lower (in this case, solid white or possibly blue if selected).
So, the text is first displayed in a transparent, transparent bitmap. Since he has no idea what will ultimately be lower, it should be displayed using grayscale instead of ClearType. The effect is then applied to this bitmap. Then the bitmap is drawn at the place where you expect it to be on the screen, and there is no way to get ClearType, even if it is on top of a solid color without transparency.
As a possible workaround, try using 2 copies of the text. First, apply the effect to the "lower" version of the text ("below", I mean that it should have a lower Z-index value, and this is so if it is "first" in XAML). Then draw plain text on top of it (which will get ClearType). I think this will work, but I have not tried it, and you will probably have to experiment until you get the desired visual result.
source share