У меня есть элемент управления содержимым с шаблоном, который я хотел бы динамически изменить во время работы программного обеспечения. Я новичок в WPF и изо всех сил, как это сделать. До сих пор я вмешивался в StaticResource и RelativeSource. Вот код:
Один из моих шаблонов:
<ControlTemplate x:Key="HomeTemplate">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="1*" />
<RowDefinition Height="1*" />
</Grid.RowDefinitions>
<materialDesign:PackIcon Kind="Home" Grid.Row="0"
HorizontalAlignment="Center" VerticalAlignment="Bottom"
Width="100" Height="100" />
<TextBlock Grid.Row="1" Text="HOME PAGE"
HorizontalAlignment="Center" VerticalAlignment="Top" FontSize="50" />
</Grid>
</ControlTemplate>
ContentControl Я пытаюсь привязать шаблон к. В настоящее время он напрямую настроен на шаблон, но я хочу, чтобы он был установлен на свойство в моем коде C #, чтобы я мог динамически изменять его.
<ContentControl x:Name="content1" Grid.Row="1"
Template="{StaticResource HomeTemplate}"
Visibility="Visible">
</ContentControl>
Вот моя ViewModel, где я хочу изменить шаблон:
public class TabsViewModel
{
public ObservableCollection<TabData> Tabs { get; set; }
public Command cmdAddTab { get; set; }
public string PageTemplate { get; set; }
public TabsViewModel()
{
var sampleData = Enumerable.Range(0, 1).Select(x => new TabData()
{
TabText = "TAB",
});
Tabs = new ObservableCollection<TabData>(sampleData);
cmdAddTab = new Command(AddTab);
PageTemplate = "StaticResource HomeTemplate";
}
private void AddTab()
{
Tabs.Add(new TabData()
{
TabText = "NEW TAB"
});
}
}