在 ImageBrush 中对图像使用 x:Phase

Using x:Phase with image inside ImageBrush

我设计了一个 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>

x:Phase 的引入是为了简化定相过程,换言之,您无需自己编写代码。

SO 'maybe' 你可以尝试通过代码再次实现相位调整吗? 我知道这需要很多工作,但可能是唯一可以与 Ellipse 一起使用的东西。

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

您需要连接到 GridView / ListView ContainerContentChanging 事件并从那里完成各个阶段