A diferencia de WPF, TextBlock no tiene propiedad de fondo. He visto que una solución alternativa sería envolver el bloque de texto en un borde y cambiar el fondo del borde.
Ahora quiero cambiar el fondo del borde en un evento que se activa cuando se carga el bloque de texto.
comprobando la propiedad Parent del bloque de texto activado, veo que solo tiene una referencia al panel de pila pero no al borde. ¿Cómo puedo cambiar el fondo de los bordes en la función del evento?
el código que no funciona que he probado es este:
private void BitText_Loaded(object sender, RoutedEventArgs e)
{
TextBlock bitText = sender as TextBlock;
Border border = bitText.Parent as Border;
if ((int)bitText.DataContext == 1)
{
bitText.Foreground = new SolidColorBrush(Windows.UI.Colors.LightGreen);
border.Background = new SolidColorBrush(Windows.UI.Colors.DarkGreen);
}
else
{
bitText.Foreground = new SolidColorBrush(Windows.UI.Colors.Gray);
border.Background = new SolidColorBrush(Windows.UI.Colors.LightGray);
}
}
El código XAML:
<ListBox.ItemTemplate>
<DataTemplate>
<Border Background="Gray">
<StackPanel Orientation="Horizontal">
<TextBlock x:Name="BitText" Text="{Binding}" Loaded="BitText_Loaded"/>
</StackPanel>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
Transmitir bitText.Parent
a a StackPanel
y luego lanzar el Parent
de StackPanel
a a Border
:
private void BitText_Loaded(object sender, RoutedEventArgs e)
{
TextBlock bitText = sender as TextBlock;
StackPanel stackPanel = bitText.Parent as StackPanel;
Border border = stackPanel.Parent as Border;
//...
}
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras