Я полагаю, вы могли бы использовать Material Design In XAML . Обязательно ознакомьтесь с демонстрационным проектом . Содержит ответы на все вопросы об общем управлении.
ВАРИАНТ ОДИН.
Обычно вы используете "ItemsControl" для динамической загрузки объектов в представление. Элемент управления элементами связан с источником элементов в модели внутреннего представления. Источник должен иметь тип ObservableCollection. Каждый раз, когда вы отправляете элементы в этот источник, ItemsControl будет обновляться и вставляться на основе предоставленного им шаблона.
Ниже приведен простой короткий пример.
XAML
<ItemsControl ItemsSource="{Binding ItemsToLoad}" Grid.IsSharedSizeScope="True" Margin="12 0 12 0">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button>Hi</Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Я предполагаю, что вы хорошо понимаете привязки, поэтому я не буду публиковать весь код конца.
ВАРИАНТ ВТОРОЙ
программно
Поскольку вы упомянули, что хотите сделать это программно, вы также можете просто сделать это:
Шаг 1 : создайте сетку и настройте макет для работы с ним.
<Grid x:Name="grid_Main">
<Grid.ColumnsDefinition>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnsDefinition>
<Grid.RowDefinition>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinition>
</Grid>
Шаг 2: Код позади.
private void AddControlToGrid()
{
Button button = new Button();
grid_Main.Children.Add(button );
Grid.SetRow(button , 1); // 1 is row index
Grid.SetColumn(button , 0);// 0 is column index
}
Просто примечание об использовании материала дизайна. Вам нужно сослаться на библиотеку, прежде чем вы сможете использовать ее в своем представлении.
Как это:
Добавьте это к ресурсам вашего приложения.
<Application x:Class="demo_app.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:demo_app">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Light.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Primary/MaterialDesignColor.DeepPurple.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Accent/MaterialDesignColor.Lime.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
Добавьте эту ссылку в любое представление, для которого необходимо использовать элемент управления дизайном материала.
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
Затем можно использовать элементы управления дизайном материала следующим образом.
<materialDesign:Card Width="200">
<Grid>
<!--Content-->
</Grid>
</materialDesign:Card>