Avalonia 中的 GetTemplateChild / TemplatePart?
Posted
技术标签:
【中文标题】Avalonia 中的 GetTemplateChild / TemplatePart?【英文标题】:GetTemplateChild / TemplatePart in Avalonia? 【发布时间】:2021-12-27 00:00:03 【问题描述】:在 WPF 中,您将声明 XAML 控件以供 TemplatePart 代码隐藏使用,然后使用 GetTemplateChild 获取对这些控件的引用。
您如何在 Avalonia UI 中实现这一点?
【问题讨论】:
【参考方案1】:在模板中设置控件名称。
<Styles xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="using:Sample.Controls">
<Style Selector="controls|TestControl">
<Setter Property="Template">
<ControlTemplate>
<TextBlock Name="PART_TextBlock" Text="Templated Control" />
</ControlTemplate>
</Setter>
</Style>
</Styles>
在覆盖 OnApplyTemplate 时使用 e.NameScope.Find(...)
using Avalonia.Controls;
using Avalonia.Controls.Primitives;
namespace Sample.Controls
public class TestControl : TemplatedControl
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
base.OnApplyTemplate(e);
var tb = e.NameScope.Find<TextBlock>("PART_TextBlock");
【讨论】:
以上是关于Avalonia 中的 GetTemplateChild / TemplatePart?的主要内容,如果未能解决你的问题,请参考以下文章
在 Avalonia 类库中的何处加载 ContentControl 样式?
Avalonia 中的 GetTemplateChild / TemplatePart?
Slider.IsMoveToPointEnabled 在 Avalonia