突出显示触发事件的按钮

时间:2012-05-28 22:45:14

标签: c# silverlight-4.0

考虑一个具有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();
}

当我通过单击“确定”按钮关闭子窗口时,它会更改突出显示的超链接按钮的颜色(今天),因为我正在使用此代码执行此操作: -

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事件的一部分,以便它更改事件触发的颜色(打开子窗口的那个)超链接按钮,无论哪个超链接按钮是触发事件的那个?

1 个答案:

答案 0 :(得分:0)

好的,现在我可以说我已经做到了。如果有人遇到类似的问题,我就会这样做。

  1. 在may Home.xaml.cs中,我添加了一个这样的公共属性: -

    公共HyperlinkBut​​ton dayHyperLink {get;组; }

  2. 我在Click事件中添加了以下代码: -

    dayHyperLink =(HyperlinkBut​​ton)发件人;

  3. 在rapport_Closing事件中,我将if语句更改为以下代码: -

    if(rapport.UsersValue ==“Röd”&& rapport.DialogResult == true)         {             dayHyperLink.Background = new SolidColorBrush(Colors.Red);         } 这让我感到高兴;)