When the Background / Foreground property of the RadBarcodeQR control is set, at runtime time that property is ignored.
Workaround:
On loaded, change the pixel value of the ImageSource of the code in the following manner
(in case the Foreground is set to a valid SolidColorBrush value):
public void RadBarcodeQR_Loaded(object sender, RoutedEventArgs e)
{
Image image = this.ChildrenOfType<Image>().First();
ImageSource src = image.Source;
Color c = ((sender as RadBarcodeQR).Foreground as SolidColorBrush).Color;
image.Source = ChangePixelValue(src, c);
}
public static WriteableBitmap ChangePixelValue(ImageSource src, Color c)
{
BitmapSource originalSource = src as BitmapSource;
WriteableBitmap modifiedSource = new WriteableBitmap(originalSource);
int h = modifiedSource.PixelHeight;
int w = modifiedSource.PixelWidth;
int[] pixelData = new int[w * h];
int widthInBytes = 4 * w;
modifiedSource.CopyPixels(pixelData, widthInBytes, 0);
int colorInt = BitConverter.ToInt32(new byte[] { c.B, c.G, c.R, 0x00 }, 0);
for (int i = 0; i < pixelData.Length; i++)
{
pixelData[i] ^= colorInt;
}
modifiedSource.WritePixels(new Int32Rect(0, 0, w, h), pixelData, widthInBytes, 0);
return modifiedSource;
}