我有一个带有模板的内容控件,我想在软件运行时进行动态更改。我是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"
});
}
}