Кнопка поиска по содержанию - PullRequest
0 голосов
/ 18 января 2012
 <StackPanel Name="stTeam2" Width="40" >
     <Button Click="Team2_Click"  Height="55" Name="btn1T2" Width="30">T1</Button>
     <Button Click="Team2_Click" Height="55" Name="btn2T2" Width="30">T2</Button>
     <Button Click="Team2_Click" Height="55" Name="btn3T2" Width="30">T3</Button>
     <Button Click="Team2_Click" Height="55" Name="btn4T2" Width="30">T4</Button>
     <Button Click="Team2_Click" Height="55" Name="btn5T2" Width="30">T5</Button>
     <Button Click="Team2_Click" Height="55" Name="btn6T2" Width="30">T6</Button>
     <Button Click="Team2_Click" Height="55" Name="btn7T2" Width="30">T7</Button>
 </StackPanel>

Можно ли найти элемент управления Button на основе содержимого.

Если указан T5, можем ли мы найти элемент управления btn5T2 в панели стека?

Ответы [ 3 ]

1 голос
/ 18 января 2012

Да, вы можете ... Хотя совершенно неэффективный способ разработки программного обеспечения WPF.
Поскольку вы дали вашей StackPanel имя в XAML, вы можете получить к нему доступ с помощью Code-Behind

Код позади

for (int i = 0; i < stTeam2.Children.Count; i++)
{
    if (stTeam2.Children[i].GetType() == typeof(Button))
    {
        Button currentButton = (Button)stTeam2.Children[i];
        if (currentButton.Content.ToString().Equals("T4"))
        {
            // Do something
        }
    }
}
1 голос
/ 18 января 2012

Аналогично ответу MyKuLLSKI, но с использованием LINQ:

var matchingButton = stTeam2.Children.OfType<Button>().Where(
                         btn => btn.Content.ToString().Equals("T5")).FirstOrDefault();
1 голос
/ 18 января 2012

Конечно, с помощью Visual Tree (класс VisualTreeHelper) вы можете найти каждый элемент и проверить его содержимое.

ИЛИ для панели, вы можете зациклить дочерние элементы через свойство Panel.Children.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...