1

我设计了一个 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为 image 指定,但由于明显的限制,我不能这样做:x:Phase只为FrameworkElement所以我不能指定ImageBrush'sx: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>
4

1 回答 1

0

x:Phase 已被引入以简化分阶段过程,换句话说,您无需自己编写代码。

所以'也许'你可以尝试通过代码再次实现分阶段?我知道这需要做很多工作,但可能是唯一适用于 Ellipse 的东西。

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

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

于 2015-12-18T07:46:13.043 回答