Как динамически изменить шаблон ContentControl - PullRequest
0 голосов
/ 04 июля 2019

У меня есть элемент управления содержимым с шаблоном, который я хотел бы динамически изменить во время работы программного обеспечения. Я новичок в 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"
        });
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...