ImageBru sh с asyn c ImageSource не всегда рендерит - PullRequest
0 голосов
/ 02 марта 2020

Я отображаю изображения в WPF ItemsControl следующим образом:

<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 привязан к URL-адресу, указывающему на сервер изображений в Интернете (протокол HTTP)

Иногда ImageBrush не рендерится, но если я наведу курсор мыши на что-то в программе, которая должна рисовать (например, кнопка, которая выделяется при наведении курсора мыши), изображение отобразится.

Is Есть ли что-то, что я могу сделать, чтобы подтолкнуть WPF для рендеринга ImageBrush после его загрузки?

. NET Core 3.1

1 Ответ

0 голосов
/ 03 марта 2020

Из приведенного выше обсуждения я собрал это решение. 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...