gpt4 book ai didi

.net - 自动卡住从模板构建的 wpf 对象

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

如果可卡住的 wpf 对象是通过 DataTemplate、ControlTemplate 或样式生成的,那么在任何情况下都会自动卡住它们是否正确?

最佳答案

我在 VisualTree-Analyzer 中使用了一些画笔,看看自动卡住是如何工作的。这是我的测试结果:

通过 ControlTemplates、DataTemplates 或 Styles 附加的所有画笔都已被卡住,无论模板或样式中的声明画笔是否已被卡住。

为此,我检查了以下模板和样式的结果可视化树:

<DataTemplate x:Key="Test_DataTemplate">
<Grid>
<!-- Explicit creation to ensure Brush is !IsFrozen through the converter-->
<Grid.Background>
<SolidColorBrush Color="Red"/>
</Grid.Background>
<TextBlock Text="{Binding}"/>
</Grid>
</DataTemplate>

<ControlTemplate x:Key="Test_ControlTemplate" TargetType="{x:Type ContentControl}">
<Border >
<Border.Background>
<SolidColorBrush Color="Green" />
</Border.Background>
<ContentPresenter />
</Border>
</ControlTemplate/>

<Style x:Key="Test_Style" TargetType="TextBlock">
<Setter Property="Background" >
<Setter.Value>
<SolidColorBrush Color="Yellow" />
</Setter.Value>
</Setter>
</Style>

<TextBlock >
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Background" >
<Setter.Value>
<SolidColorBrush Color="Violet" />
</Setter.Value>
</Setter>
</Style>
</TextBlock.Style>
</TextBlock>

如前所述,视觉树中的画笔总是被卡住。

此外,如果样式至少使用过一次,则样式测试样式中的 setter 的画笔也被卡住。我认为这种“一次性限制”是因为 WPF 必须测试是否没有动画接触画笔,并且它会在第一次使用时执行此操作。但这只是推测。我还没有对动画进行任何测试。

根据对这个话题的老观察,我认为我最初的问题可能会得到肯定的回答。这种行为在我看来也是合乎逻辑的。但很明显,对一种资源进行如此少的测试也会导致完全错误的方向。遗憾的是,关于这个主题的可用信息并不多。如果有人有一些好的链接,或者我在简单的测试中犯了明显的错误,请给我留言。

关于.net - 自动卡住从模板构建的 wpf 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3063337/

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