首页 文章

如何在UWP C#中向ControlTemplate添加网格

提问于
浏览
0

我想在UWP应用程序中使用C#向ControlTemplate添加网格

例如,我有XAML代码,如:

<ControlTemplate TargetType="HyperlinkButton">
<Grid Name="RootGrid">
    <VisualStateManager.VisualStateGroups>
        <VisualStateGroup Name="CommonStates">
            <VisualState Name="Normal"/>
            <VisualState Name="PointerOver">
                <Storyboard>
                </Storyboard>
            </VisualState>
        </VisualStateGroup>
    </VisualStateManager.VisualStateGroups>
    <ContentPresenter Name="ContentPresenter" AutomationProperties.AccessibilityView="Raw" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" ContentTemplate="{TemplateBinding ContentTemplate}" ContentTransitions="{TemplateBinding ContentTransitions}" Content="{TemplateBinding Content}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" Padding="{TemplateBinding Padding}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Grid>

我想从C#中做到这一点,ControlTemplate没有Child或Children

Grid grid1 = new Grid();
ControlTemplate cTempl = new ControlTemplate();
cTempl.child.add(grid1);

1 回答

  • 1

    我不确定为什么你需要更改后面的 ControlTemplate 代码,但不建议这样做 . 根据ControlTemplate类的评论:

    控件模板提供构成控件实例的视觉效果和部件,因为它显示在应用程序的UI中 . 在运行时,模板已经应用,因此从模板创建的所有部件现在都是控件的真正部分 .

    模板已经在运行时应用,并且在定义 ControlTemplate 时实际上只有两个属性: TargetType 和隐式XAML . 如果您确实想要设置代码,可以尝试使用XamlReader来解析XAML,例如:

    const string xaml = "<ControlTemplate xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"><Rectangle Stroke=\"Red\" StrokeThickness=\"3\" /></ControlTemplate>";
    ControlTemplate сt=(ControlTemplate)XamlReader.Load(xaml);
    

    同样,不建议这样做 . 想想你为什么需要这个功能 . 您可以在XAML中直接更改它,或创建自定义控件以使用 OnApplyTemplate 方法设置您自己的 ControlTemplate .

相关问题