C#でButtonのForegroundを変えようとして、
for (int i = 0; i < 25; i++) { Button b = this.FindName("b" + i.ToString()) as Button; b.Foreground = new SolidColorBrush(Color.FromArgb(255,0,0,0));
とかすると、クリックしていないボタンの色は変わるけど、クリックしたボタンはデフォルトの白のままになります。
これは、ボタンをクリックしたときにVSMが走るのかなんかわかんないけど、b自身の持ってるプロパティの値と、bのテンプレートのプロパティの値が一致しないかららしい。
で、解決方法として、変えたいだけのStyleを用意して、
b.Style = (Style)(this.Resources["ButtonStyleWhite"]);
とか
b.Style = (Style)(this.Resources["ButtonStyleBlack"]);
とかでうまく変わるようになった。
こういうのって、ほんとぱっと見ただけじゃ気づかないから、もういっそコントロール使うときは、一緒にStyleも決めちゃって、コントロール自身のタグには、ForegroundとかBorderBrushとか一切書かないほうが、安全でスマートなのかもしれないですね。