#c# #wpf
#c# #wpf
Вопрос:
У меня возникла проблема с кодом 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);
}
Но это все окно, которое становится размытым…
Итак, я спрашиваю вас, ребята, знаете ли вы альтернативу «этому.BlurApply» или, если вы знаете способ создать переменную, которая изменяется в зависимости от выбранного элемента!
Комментарии:
1. Сигнатура
sender
методаobject sender
— это «то, что было нажато». Можете ли вы просто получить его цвет и размыть его? Или использовать его для поиска того, что такое LightGreen? Или поместите все объекты в вашем окне в коллекцию (например, словарь) и сопоставьте с вашей вещью (отправителем) с тем, что вы размываете2. Самый простой способ для меня — действительно получить цвет изображения. Как я могу получить его цвет в переменной like
currentImage
?
Ответ №1:
Одно событие для всех ваших отправителей
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;
}
Комментарии:
1. Спасибо! Это сработало нормально, теперь я попытаюсь узнать больше об UIElement
Большое вам спасибо!