gpt4 book ai didi

wpf - OnApplyTemplate() 如何用于 UserControl?

转载 作者:行者123 更新时间:2023-12-01 12:38:19 25 4
gpt4 key购买 nike

我没能找到这方面的任何例子。在下面使用自定义控件 SimpleTextBlock(继承自 TextBlock)定义了一个 UserControl,我想在用户控件代码隐藏中使用 OnApplyTemplate() 事件来获取仅在运行时呈现后才为 SimpleTextBlock 所知的一些属性-时间。

此代码无效。这是怎么做到的?

  XAML

<UserControl x:Class="Nova5.UI.Views.Ink.InkEditorView"
..........
<Grid Background="#FFE24848" >
..........

<Canvas Grid.Row="1" Grid.RowSpan="3">

<ScrollViewer VerticalScrollBarVisibility="Auto"
Width="{Binding Parent.ActualWidth, Mode=OneWay, RelativeSource={RelativeSource Self}}"
Height="{Binding Parent.ActualHeight, Mode=OneWay, RelativeSource={RelativeSource Self}}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="100"/>
</Grid.RowDefinitions>


<fsc:SimpleTextBlock x:Name="PART_SimpleTextBlock"
Background="#FFE24848"
RichText="{Binding RichText, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}"
FontSize="{Binding FontSize, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}"
FontStyle="{Binding FontStyle, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}"
FontWeight="{Binding FontWeight, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}"
FontFamily="{Binding FontFamily, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}"
/>
</Grid>
</ScrollViewer>
</Canvas>
</Grid>

    C# code-behind:

[TemplatePart(Name = "PART_SimpleTextBlock", Type = typeof(TextBlock))]
public partial class InkEditorView : UserControl
{

public override void OnApplyTemplate()
{
base.OnApplyTemplate();

*** t IS NULL ????
SimpleTextBlock t = (SimpleTextBlock)base.GetTemplateChild("PART_SimpleTextBlock");


}

我错过了什么? (友善 :))感谢您的帮助。

最佳答案

OnApplyTemplate 仅适用于自定义控件,不适用于用户控件。 :)

您的 C# 代码是自定义控件的实现,而您的 xaml 代码是创建用户控件。

基本上,用户控件是用来将一些控件和面板组合在一起的,而自定义控件就像一个 Button、一个 CheckBox 或一个 ListView 。通常,当您想要扩展现有控件时,您希望创建一个自定义控件。在您的情况下,您似乎想要扩展 UserControl

link也有它们之间的比较,也是如何创建它们的一个很好的例子。

关于wpf - OnApplyTemplate() 如何用于 UserControl?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27512336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com