当WPF / C#中的任何UI元素发生变化时,是否会触发任何事件?

时间:2012-10-30 19:27:52

标签: c# wpf events user-interface

我有一个WPF应用程序,其中包含许多组成UI的文本框和组合框。我有一个“保存”按钮,当这些文本框或组合框内容发生任何变化时,我想要变成红色。是否有一个我可以处理的事件,所以我不必写

btnSave.Foreground = Brushes.Red

每个文本框的_TextChanged事件?

3 个答案:

答案 0 :(得分:3)

您可以循环遍历表单的子Controls,遍历表单上的所有文本框,并相应地将事件绑定到一起。

//-- This is a hair on the pseudo side, ChangeSavebuttonToRedHandler is an event 
//-- handler for your foreground change.. You can also use a lambda or whatever 
//-- you'd like.
foreach(var loChild in this.Controls)
{
    if(loChild is TextBox)
    {
        loChild.TextChanged += ChangeSaveButtonToRedHandler;
    }
}

答案 1 :(得分:1)

有很多方法可以做这样的事情。最好的方法是了解"Bubbling and Tunneling in WPF""Attached events"的用法。以下是一些参考文献:

此链接拥有您所需要的一切。 http://msdn.microsoft.com/en-us/library/ms742806.aspx

http://www.wpfmentor.com/2008/11/understand-bubbling-and-tunnelling-in-5.html

干杯

答案 2 :(得分:1)