在ImageBrush中使用x:Phase和图像

本文关键字:Phase 图像 ImageBrush | 更新日期: 2023-09-27 18:27:25

我设计了一个UWP应用程序,我很高兴使用x:Bindx:Phase等新功能。

我有一个简单的模型(省略了GridStackPanel等容器):

<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提供,所以我不能指定ImageBrushx: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>

在ImageBrush中使用x:Phase和图像

x:Phase的引入是为了简化分阶段过程,换句话说,这样您就不需要自己编写代码。

所以"也许"你可以尝试通过代码再次实现分阶段?我知道这是一项艰巨的工作,但可能是Ellipse唯一可行的东西。

可以在这里找到一个良好的开端示例http://mcnextpost.com/2015/11/10/uwpxaml-compiled-binding-incremental-rendering-with-xphase/

您需要连接到GridView/ListView ContainerContentChanging事件,并从那里完成

的各个阶段