在 ImageBrush 中对图像使用 x:Phase
Using x:Phase with image inside ImageBrush
我设计了一个 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 的引入是为了简化定相过程,换言之,您无需自己编写代码。
SO 'maybe' 你可以尝试通过代码再次实现相位调整吗?
我知道这需要很多工作,但可能是唯一可以与 Ellipse 一起使用的东西。
可以在此处找到一个好的开始示例http://mcnextpost.com/2015/11/10/uwpxaml-compiled-binding-incremental-rendering-with-xphase/
您需要连接到 GridView / ListView ContainerContentChanging
事件并从那里完成各个阶段
我设计了一个 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 的引入是为了简化定相过程,换言之,您无需自己编写代码。
SO 'maybe' 你可以尝试通过代码再次实现相位调整吗? 我知道这需要很多工作,但可能是唯一可以与 Ellipse 一起使用的东西。
可以在此处找到一个好的开始示例http://mcnextpost.com/2015/11/10/uwpxaml-compiled-binding-incremental-rendering-with-xphase/
您需要连接到 GridView / ListView ContainerContentChanging
事件并从那里完成各个阶段