在ImageBrush中使用x:Phase和图像
本文关键字:Phase 图像 ImageBrush | 更新日期: 2023-09-27 18:27:25
我设计了一个UWP应用程序,我很高兴使用x:Bind
和x:Phase
等新功能。
我有一个简单的模型(省略了Grid
和StackPanel
等容器):
<TextBlock Text="{x:Bind Title}" x:Phase="0" />
<TextBlock Text="{x:Bind Date}" x:Phase="1" />
<Ellipse Stretch="UniformToFill">
<Ellipse.Fill>
<ImageBrush ImageSource="{x:Bind Image}" />
</Ellipse.Fill>
</Ellipse>
所以我想为图像指定x:Phase
,但由于明显的限制,我不能这样做:x:Phase
只为FrameworkElement
提供,所以我不能指定ImageBrush
的x:Phase
,而且必须用x:Bind
指定,所以我无法在Ellipse
上使用它。
将x:Phase
与文本一起使用并允许首先加载图像是很奇怪的。如何解决这个问题?
UPD:有黑客!
通过x:Bind
将任何不重要的属性设置为其默认值以伪造模型属性。一行代码而不是几十行代码。
<Ellipse Stretch="UniformToFill" CanDrag="{x:Bind PlaceholderCanDrag}" x:Phase="2">
<Ellipse.Fill>
<ImageBrush ImageSource="{x:Bind Image}" />
</Ellipse.Fill>
</Ellipse>
x:Phase的引入是为了简化分阶段过程,换句话说,这样您就不需要自己编写代码。
所以"也许"你可以尝试通过代码再次实现分阶段?我知道这是一项艰巨的工作,但可能是Ellipse唯一可行的东西。
可以在这里找到一个良好的开端示例http://mcnextpost.com/2015/11/10/uwpxaml-compiled-binding-incremental-rendering-with-xphase/
您需要连接到GridView/ListView ContainerContentChanging
事件,并从那里完成