Windows Presentation Foundation (WPF) – это новый вид клиентских приложений для Windows, который пришел на смену WindowsForms. WPF встроен в .NetFramework и встроен в операционную систему Windows начиная с Windows Vista. Создавать приложения Windows Presentation Foundation довольно интересно, но начинать надо с классического "Hello, world".
Для создания WPF приложений понадобится Visual Studio 2013.
Нажмите кнопку "Создать новый проект" и выберите тип Visual C# / WPF Application (Рис.1). В названии проекта введите "HelloWorldWPF". Вы конечно можете писать на Visual Basic, но лично я рекомендую только C#.
После нажатия кнопки Ок, рабочая область будет выглядеть примерно так:
Теперь рассмотрим 2 способа вывести классическое приветствие миру.
Визуальный метод
Нужно перетащить элемент управления типа Label в окно приложения, в свойствах контрола ввести "Hello, world" (Рис.3).
Как видно в коде XAML файла, контрол добавлен внутрь контейнера <Grid>. Запомните это.
Элементы управления добавляются внутрь Grid. Можно внутри Grid добавить контейнер Canvas и привязывать к нему другие элементы.
Программный метод
Элементы управления можно динамически добавлять из кода. Для начала в файле MainWindow.xaml пропишите параметр Name для Grid, чтобы из кода было проще к нему обращаться:
<Grid Name="mainGrid"/>
Теперь откройте файл MainWindow.xaml.cs и найдите код:
public MainWindow() { InitializeComponent(); }
После InitializeComponent() нужно добавить код контрола Label. Добавить его надо не просто в окно, а привязать к родительскому элементу, в нашем случае это <Grid>. в XAML контролы добавляются примерно так:
public MainWindow() { InitializeComponent(); Label lbl = new Label(); lbl.Content = "Hello, world"; mainGrid.Children.Add(lbl); }
Запустив приложение, мы видим, что надпись "Hello, world" есть и находится в левом верхнем углу. Чтобы переместить ее внутри контейнера Grid нужно добавить такую строчку:
mainGrid.Margin = new Thickness(40, 30, 10, 20);
Итоговый код будет выглядеть так:
public MainWindow() { InitializeComponent(); Label lbl = new Label(); lbl.Content = "Hello, world"; mainGrid.Children.Add(lbl); mainGrid.Margin = new Thickness(40, 30, 10, 20); }
Результат: