如何在 UWP 中设置控件模板的值



>我从事 Xamarin 项目,并为 UWP 项目中的自定义控件制作了自定义呈现器。我找到了如何使用 xml 代码设置控件模板。

XML 方式:

var tb = new TextBox(); // or what I do in Xamarin var tb = Control;
var ct = (Controls.ControlTemplate)XamlReader.Load(@"
<ControlTemplate TargetType=""TextBox"" xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'>
<Grid>
....
</Grid>
</ControlTemplate>");
tb.Template = ct;

但是我如何在代码中做同样的事情呢?

var tb = new TextBox(); // or what I do in Xamarin var tb = Control;

var ct = new ControlTemplate();
ct.TargetType = typeof(TextBox);
var grid = new Grid();
ct.VisualTree = grid // This is how it was done in wpf but there is no such option in UWP
tb.Template = ct;

UWP 不支持它,我以前发现没有办法直接设置它。根据 MS 文档。

控件模板

:用作控件模板的值 属性,它通过应用 模板。几乎总是将控件模板定义为 XAML 资源,使用与样式相同的隐式键目标类型 设置带有 Setter 的 Control.Template。您很少分配 值,直接在控件实例上显示控件模板。

除了可能深入研究反思,或者按照您的第一个示例使用 XAMLReader 之外,我从未找到其他方法来执行此操作,就像您在 WPF 中所做的那样。

最新更新