ImageBrush with async ImageSource 并不总是呈现



我在WPFItemsControl中渲染图像,如下所示:

<ItemsControl.ItemTemplate>
<DataTemplate>
<Border
Height="200"
HorizontalAlignment="Stretch"
CornerRadius="9,9,0,0">
<Border.Background>
<ImageBrush
ImageSource="{Binding MediaUrl, Mode=OneWay, IsAsync=True}"
RenderOptions.BitmapScalingMode="LowQuality"
RenderOptions.CachingHint="Cache"
Stretch="UniformToFill" />
</Border.Background>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>

ImageSource绑定到指向Web(HTTP协议(上的图像服务器的URL

有时ImageBrush不渲染,但如果我将鼠标移到程序中必须绘制的东西上(例如,鼠标悬停时高亮显示的按钮(,图像就会渲染。

我能做些什么来推动WPF在加载后渲染ImageBrush吗?

.NET Core 3.1

通过上面的讨论,我提出了这个解决方案。VisualBrush允许我使用Image而不是ImageBrush,这在我的用例中表现得更好。

<ItemsControl.ItemTemplate>
<DataTemplate>
<Border
Height="200"
HorizontalAlignment="Stretch"
CornerRadius="9,9,0,0">
<Border.Background>
<VisualBrush
AlignmentY="Top"
Stretch="UniformToFill">
<VisualBrush.Visual>
<Image
RenderOptions.BitmapScalingMode="LowQuality"
Source="{Binding MediaUrl}" />
</VisualBrush.Visual>
</VisualBrush>
</Border.Background>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>

最新更新