首页 > 解决方案 > 如何创建一个变量来改变点击项目的功能?

问题描述

我在 C# WPF 代码上遇到问题:我在一个窗口上有多个彩色图像,当我单击它时,它变得模糊(这有效)。但是我的代码优化得很糟糕,我想得到一些帮助!

这是我的代码的一小部分:

private void BrownBlur(object sender, MouseButtonEventArgs e)
{
   Brown.BlurApply(blurRadius: 15, new TimeSpan(0, 0, 1), TimeSpan.Zero);
}

private void LightGreenBlur(object sender, MouseButtonEventArgs e)
{
   LightGreen.BlurApply(blurRadius: 15, new TimeSpan(0, 0, 1), TimeSpan.Zero);
}

窗户的每种颜色都是这样的......

我知道这可能是最糟糕的编码方式,所以我尝试了这样的事情:

private void isBlurred()
{
   this.BlurApply(blurRadius: 15, new TimeSpan(0, 0, 1), TimeSpan.Zero);
}

但这是整个窗口变得模糊......

所以我问你们是否知道“this.BlurApply”的替代方法,或者您是否知道创建变量的方法,该变量会改变单击项目的功能!

标签: c#wpf

解决方案


面向所有发件人的一项活动

private void OnBlureObjClick(object sender, MouseButtonEventArgs e)
{ 
  UIElement obj = sender as UIElement; //other parent class or interface
  obj.BlurApply(blurRadius: 15, new TimeSpan(0, 0, 1), TimeSpan.Zero);
}

然后将事件分配给您的所有对象

Brand.OnMouseButtonClik +=OnBlureObjClick;
LightGreen.OnMouseButtonClik +=OnBlureObjClick;

或者创建对象的集合,然后在 foreach 循环中添加事件

foreach(var item in collection)
{
 item .OnMouseButtonClik +=OnBlureObjClick;
}

推荐阅读