Use the Grid to create a dialog box that uses the WPF layout API
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="Grid_Run_Dialog.Window1" Name="mainWindow" Loaded="onLoaded" Width="425" Height="200"/> //File:Window.xaml.vb Imports System Imports System.Windows Imports System.Windows.Controls Imports System.Windows.Media Namespace Grid_Run_Dialog Public Partial Class Window1 Inherits Window Private grid1 As New Grid() Private colDef1 As New ColumnDefinition() Private colDef2 As New ColumnDefinition() Private colDef3 As New ColumnDefinition() Private colDef4 As New ColumnDefinition() Private colDef5 As New ColumnDefinition() Private rowDef1 As New RowDefinition() Private rowDef2 As New RowDefinition() Private rowDef3 As New RowDefinition() Private rowDef4 As New RowDefinition() Private txt1 As New TextBlock() Private txt2 As New TextBlock() Private button1 As New Button() Private button2 As New Button() Private button3 As New Button() Private tb1 As TextBox Private img1 As New Image() Private Sub onLoaded(sender As Object, e As EventArgs) grid1.Background = Brushes.Gainsboro grid1.HorizontalAlignment = HorizontalAlignment.Left grid1.VerticalAlignment = VerticalAlignment.Top grid1.ShowGridLines = True grid1.Width = 425 grid1.Height = 165 colDef1.Width = New GridLength(1, GridUnitType.Auto) colDef2.Width = New GridLength(1, GridUnitType.Star) colDef3.Width = New GridLength(1, GridUnitType.Star) colDef4.Width = New GridLength(1, GridUnitType.Star) colDef5.Width = New GridLength(1, GridUnitType.Star) grid1.ColumnDefinitions.Add(colDef1) grid1.ColumnDefinitions.Add(colDef2) grid1.ColumnDefinitions.Add(colDef3) grid1.ColumnDefinitions.Add(colDef4) grid1.ColumnDefinitions.Add(colDef5) rowDef1.Height = New GridLength(1, GridUnitType.Auto) rowDef2.Height = New GridLength(1, GridUnitType.Auto) rowDef3.Height = New GridLength(1, GridUnitType.Star) rowDef4.Height = New GridLength(1, GridUnitType.Auto) grid1.RowDefinitions.Add(rowDef1) grid1.RowDefinitions.Add(rowDef2) grid1.RowDefinitions.Add(rowDef3) grid1.RowDefinitions.Add(rowDef4) img1.Source = New System.Windows.Media.Imaging.BitmapImage(New Uri("fil:///c:/image.png", UriKind.Relative)) Grid.SetRow(img1, 0) Grid.SetColumn(img1, 0) txt1.Text = "Text" txt1.TextWrapping = TextWrapping.Wrap Grid.SetColumnSpan(txt1, 4) Grid.SetRow(txt1, 0) Grid.SetColumn(txt1, 1) txt2.Text = "Open:" Grid.SetRow(txt2, 1) Grid.SetColumn(txt2, 0) Grid.SetRow(tb1, 1) Grid.SetColumn(tb1, 1) Grid.SetColumnSpan(tb1, 5) button1.Content = "OK" button2.Content = "Cancel" button3.Content = "Browse ..." Grid.SetRow(button1, 3) Grid.SetColumn(button1, 2) button1.Margin = New Thickness(10, 0, 10, 15) button2.Margin = New Thickness(10, 0, 10, 15) button3.Margin = New Thickness(10, 0, 10, 15) Grid.SetRow(button2, 3) Grid.SetColumn(button2, 3) Grid.SetRow(button3, 3) Grid.SetColumn(button3, 4) grid1.Children.Add(img1) grid1.Children.Add(txt1) grid1.Children.Add(txt2) grid1.Children.Add(tb1) grid1.Children.Add(button1) grid1.Children.Add(button2) grid1.Children.Add(button3) mainWindow.Content = grid1 End Sub End Class End Namespace