禁用具有类似名称的按钮

时间:2017-01-12 21:59:19

标签: wpf button isenabled

我有多个名称相似的按钮。主要的相似之处是后缀_min。 如何根据名称的部分禁用所有这些(因此不是基于整个名称?

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

需要成为:

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

如何完成?

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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;
            }
        }