2017-01-12 13 views
0

У меня есть несколько кнопок с похожими именами. Основное сходство - это суффикс _min. Как они все могут быть выключены на основе части имени (и, таким образом, не основаны на всей имениОтключить кнопки с аналогичными НАЗВАНИЯМИ

btnX_min.IsEnabled = false; 
btnY_min.IsEnabled = false; 
btnZ_min.IsEnabled = false; 

должно стать:

for all buttons with string _min in Name, IsEnabled = false 

Как выполнить

ответ

1

В зависимости от того, где все эти кнопки расположены в вашем дереве Visual, вы можете использовать класс VisualTreeHelper, чтобы найти все из них. Пожалуйста, обратитесь к рекурсивному методу FindVisualChildren здесь:

Find all controls in WPF Window by type

... и попробуйте это:

foreach (Button button in FindVisualChildren<Button>(this).Where(x => !string.IsNullOrEmpty(x.Name) && x.Name.Contains("_btn"))) 
    button.IsEnabled = false; 
0

? Я не проверял, но попробовал это:

 IEnumerable<Button> buttons = mainGrid.Children.OfType<Button>(); //GridMain is the main Layout 
     foreach (Button btn in buttons) 
     { 
      if (btn.Name.Contains("_min")) 
      { 
       btn.IsEnabled = false; 
      } 
     }