Итак, предположим у нас имеется вот такая вот начальная разметка 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);
Это не сработает. Во время выполнения приложение упадет. К сожалению, на момент написание этой заметки, ответ обнаружен не был.
Комментариев нет:
Отправить комментарий