WPF - как прикрепить VisualStateGroups в шаблоне управления, созданном в коде позади? - PullRequest
0 голосов
/ 11 октября 2019
<ControlTemplate TargetType="{x:Type TreeViewItem}">
    <Grid>
        <VisualStateManager.VisualStateGroups>
            <VisualStateGroup x:Name="CommonStates">
            …
            </VisualStateGroup>
        </VisualStateManager.VisualStateGroups>
        …
    </Grid>
</ControlTemplate>

Альтернативой предыдущего шаблона управления XAML является следующий пример в коде C # .

var rootGrid        = new FrameworkElementFactory(typeof(Grid));
var controlTemplate = new ControlTemplate(typeof(TreeViewItem))
{
    VisualTree = rootGrid
};

Как прикрепить VisualStateGroup в версии с выделенным кодом? Я предполагаю, что мне нужно нацелиться FrameworkElementFactory. Метод FrameworkElementFactory.AppendChild() ожидает другого FrameworkElementFactory.

1 Ответ

0 голосов
/ 11 октября 2019

FrameworkElementFactory является устаревшим способом создания шаблонов элементов управления в соответствии с Документами Microsoft .

Этот класс является устаревшим способом программного создания шаблонов, которые являются подклассами FrameworkTemplate, таких какControlTemplate или DataTemplate;не все функциональные возможности шаблона доступны при создании шаблона с использованием этого класса. Рекомендованным способом программного создания шаблона является загрузка XAML из строки или потока памяти с помощью метода Load класса XamlReader.

Вы можете создать шаблон вкод в виде строки, а затем используйте метод XamlReader '* Load. Это упростит реализацию VisualStateGroups!

Надеюсь, это поможет.

...