Olá pessoal, tudo bom?
Aproveito uma questão que me fizeram para escrever esse post que demonstra como obter acesso a controles que estão posicionados dentro do ItemTemplate de um determinado ListBox ou outro container qualquer.
Tomando por base a seguinte definição para um ListBox cuja finalidade seria exibir tipos de pizzas e seus respectivos ingredientes:
...
...
Considerando ainda a existência de um botão que irá destacar todos os TextBlocks que exibem os ingredientes das pizzas (trocar a cor do texto Foreground)
...
...
Repare agora que utilizei um método genérico em C# que permite localizar controles dentro de um determinado container (no nosso caso o ListBox lbSabores), sendo que para o caso, faço uma pergunta buscando por um determinado TextBlock chamado txtIngredientes e, quando encontrado, troco a cor da fonte do mesmo.
...
private void Destacar(DependencyObject targetElement)
{
var count = VisualTreeHelper.GetChildrenCount(targetElement);
if (count == 0)
return;
for (int i = 0; i < count; i++)
{
var child = VisualTreeHelper.GetChild(targetElement, i);
if (child is TextBlock)
{
TextBlock targetItem = (TextBlock)child;
if (targetItem.Name == "txtIngredientes")
{
targetItem.Foreground = new SolidColorBrush(Colors.Green);
return;
}
}
else
{
Destacar(child);
}
}
}
...
Agora, imaginando que o usuário toque no botão “Destacar Ingredientes” podemos chamar o método Destacar e passar para ele o ListBox que contem os elementos que queremos localizar.
...
private void btnDestacar_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
Destacar(lbSabores);
}
...
Espero ter ajudado!
Posts Relacionados:
Grande abraço,
Eduardo Henrique Rizo (@eduardorizo)
Fonte: Blog do Eduardo H. Rizo
Comentários