<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
。
此类是以不推荐的方式以编程方式创建模板,这些模板是FrameworkTemplate的子类,例如ControlTemplate或DataTemplate;使用此类创建模板时,并非所有模板功能都可用。您可以在代码中以字符串形式构建模板,然后使用建议以编程方式创建模板的方法是使用XamlReader类的Load方法从字符串或内存流中加载XAML。
XamlReader
的Load
方法。这将使实现VisualStateGroups变得容易!我希望这会有所帮助。