У меня есть набор элементов управления, расположенных в обертке в приложении WPF, которые создаются процедурно.Первым элементом управления является метка, за которой следует группа комбо-боксов и флажок.Пользователь нажимает кнопку и добавляется новый ряд элементов управления.Это работало нормально.Затем я решил сделать ярлык немного более привлекательным, выделив ему красный круг в качестве фона, и ярлык был вложен в сетку с красным кружочком за ярлыком, который просто перечислял номер строки.Это работало нормально.И я использую, чтобы пройти через все элементы управления с этим блоком:
foreach (Control item in WrapPanelItems.Children)
{
if (item.GetType() == typeof(CheckBox))
{
RowCounter++;
}
}
теперь внезапно этот блок кода завершается с ошибкой: «Невозможно привести объект типа« System.Windows.Controls.Grid »квведите 'System.Windows.Controls.Control'. '
Так что я подозреваю, что сетка не является обычным элементом, и код завершается ошибкой.Но как бы я затем перебирал элементы управления без сбоев приложения и все же перебирал все обычные элементы управления поверх него?
Вот код для стиля и добавления метки.
Grid MyGrid= new Grid();
Ellipse myEllipse = new Ellipse();
SolidColorBrush mySolidColorBrush = new SolidColorBrush();
mySolidColorBrush.Color = Color.FromArgb(255, 107, 142, 35);
myEllipse.Fill = mySolidColorBrush;
myEllipse.Width = 20;
myEllipse.Height = 20;
MyGrid.Children.Add(myEllipse);
Label LabelCounter = new Label();
LabelCounter.Content = RowCount.ToString();
MyGrid.Children.Add(LabelCounter);
LabelCounter.VerticalAlignment = VerticalAlignment.Center;
LabelCounter.HorizontalAlignment = HorizontalAlignment.Center;
WrapPanelItems.Children.Add(MyGrid);
А также второй вопрос.Предположим, я хочу изменить текст на метке ... как бы я попал на метку, если она вложена в сетку?Можете ли вы просто изменить содержимое непосредственно, когда цикл FOR поднимает сетку?Или тогда вы должны сказать все дочерние элементы сетки, когда сетка определена в цикле FOR?
tx