Мне нужно скрыть TextBlock, который является дочерним для Border и добавлен в Grid.Следующий код динамически добавляет Border и TextBlock в Grid.Затем, если сетка содержит более 5 детей, она скрывает первых детей.Он работает правильно, чтобы скрыть границу, но TextBlock (дочерний элемент Border) остается видимым.
Есть идеи, в чем может быть проблема?Спасибо!
Border TextBorder = new Border();
TextBorder.BorderBrush = new SolidColorBrush(_settings.TextColor);
TextBorder.BorderThickness = new Thickness(0,0,0,2);
TextBorder.Padding = new Thickness(0, 10, 0, 10);
RowDefinition rd = new RowDefinition();
rd.Height = GridLength.Auto;
myGrid.RowDefinitions.Add(rd);
TextBlock uc = new TextBlock();
uc.Text = "Test";
TextBorder.Child = uc;
Grid.SetRow(TextBorder, myGrid.RowDefinitions.Count -1);
myGrid.Children.Add(TextBorder);
if (myGrid.Children.Count > 5)
{
Border border = (Border)myGrid.Children[myGrid.Children.Count - 6];
border.Visibility = Visibility.Hidden;
border.Child.Visibility = Visibility.Hidden;
}
Обновление
Код работает правильно.Проблема была в событии OnRender TextBlock, который рисует текст с некоторым графическим эффектом.Я думаю, что если элемент управления невидим, OnRender не следует поднимать, но он показывает, что он также поднимается, когда элемент управления невидим.Я не нашел способа предотвратить поднятие OnRender, ни ClipToBound, ни Invisible.Поэтому я отказываюсь от этого подхода и просто проверяю в OnRender, находится ли TextBlock в видимой области контейнера.