31個のハイパーリンクボタンがあるSilverLightプロジェクトについて考えてみます。それらは月の日を表します。このコードを使用して、今日を表すハイパーリンクボタンを強調表示しています。
var daynumberHyperButton = this.FindName("Day" + DateTime.Today.Day) as HyperlinkButton;
//Highlighting the day of the month
if (daynumberHyperButton != null)
{
daynumberHyperButton.Background = new SolidColorBrush(Colors.Gray);
}
次に、この強調表示されたハイパーリンクボタンをクリックすると、レポートを書き込むための子ウィンドウが開きます。
private void dayHyperLink_Click(object sender, RoutedEventArgs e)
{
//This will initite and show the report window
ReportWindow rapport = new ReportWindow();
rapport.Closed += new EventHandler(rapport_Closed);
rapport.Show();
}
[OK]ボタンをクリックして子ウィンドウを閉じると、このコードを使用して(今日)強調表示されたハイパーリンクボタンの色が変わります。-
private void rapport_Closed(object sender, EventArgs e)
{
ReportWindow rapport = (ReportWindow)sender;
var daynumberHyperButton = this.FindName("Day" + DateTime.Today.Day) as HyperlinkButton;
if (rapport.UsersValue == "Röd" && rapport.DialogResult==true)
{
daynumberHyperButton.Background = new SolidColorBrush(Colors.Red);
}
else if (rapport.UsersValue == "Gul")
{
daynumberHyperButton.Background = new SolidColorBrush(Colors.Yellow);
}
else
{
daynumberHyperButton.Background = new SolidColorBrush(Colors.Green);
}
}
ただし、強調表示されていない他のハイパーリンクボタンをクリックしても、強調表示されているハイパーリンクボタンの色のみが変更されます。私のrapport_Closed
イベントには次のようなものがあるので、私はこれを知っています。
var daynumberHyperButton = this.FindName("Day" + DateTime.Today.Day) as HyperlinkButton;
rapport_Closedイベントの一部である上記のコードを変更して、イベントを発生させるハイパーリンクボタンに関係なく、イベント発生(子ウィンドウを開くもの)ハイパーリンクボタンの色を変更するにはどうすればよいですか?