Итак, предположим у нас имеется вот такая вот начальная разметка XAML:
Наша цель добавить элемент, ну например Button, в дискриптор Grid'а. То есть, чтобы во время выполнения программы, разметка приняла вот такой вид:
Вот и все.
PS А что если нам надо добавить элемент не к контейнеру Grid, а например непосредственно в Window через код? У объекта Window нет свойства Children но есть метод AddChild. Так может вот так?
mainWindow.AddChild(btn);
Это не сработает. Во время выполнения приложение упадет. К сожалению, на момент написание этой заметки, ответ обнаружен не был.
<Window x:Class="WPFApp.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Name="mainWindow" Title="WPFApp" Height="550" Width="1045"> <Grid Name="rootWindow" /> </Window>
Наша цель добавить элемент, ну например Button, в дискриптор Grid'а. То есть, чтобы во время выполнения программы, разметка приняла вот такой вид:
<Window x:Class="WPFApp.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Name="mainWindow" Title="WPFApp" Height="550" Width="1045"> <Grid Name="rootWindow"> <Button Content="Press me" Width="75" Height="50" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="100,50,0,0" /> </Grid> </Window>Отправляемся в наш главный .xaml файл, в данном случае MainWindow.xaml.cs. После вызова InitializeComponent(), с помощью метода или же напрямую, пишем следующий код:
private void DrawButton() { Button btn = new Button(); btn.Content = "Press me"; btn.Width = 75; btn.Height = 50; btn.Margin = new Thickness(100, 50, 0, 0); // расположение элемента в контейнере задается с помощью свойства Margin и объекта Thickness btn.HorizontalAlignment = HorizontalAlignment.Left; btn.VerticalAlignment = VerticalAlignment.Top; // Настраиваем события при необходимости btn.Click += (s, e) => MessageBox.Show("Clicked!"); // Именем нашего Grid'а, установленного непосредственно в XAML, является rootWindow. Для добавление в него элемента мы вызываем // свойство Children и затем метод Add, который принимает в качестве параметра объект типа UIElement rootWindow.Children.Add(btn); }
Вот и все.
PS А что если нам надо добавить элемент не к контейнеру Grid, а например непосредственно в Window через код? У объекта Window нет свойства Children но есть метод AddChild. Так может вот так?
mainWindow.AddChild(btn);
Это не сработает. Во время выполнения приложение упадет. К сожалению, на момент написание этой заметки, ответ обнаружен не был.
Комментариев нет:
Отправить комментарий