Решил это, удалив свойство Window.SizeToContent
и добавив свойства VerticalAlignment
и HorizontalAlignment
в BusyIndicator (на самом деле сейчас я использовал spinner, но это не имеет значения в решении).
<Window x:Class="Test.Progress"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:extToolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit/extended"
WindowStyle="None"
AllowsTransparency="True"
BorderThickness="0"
Title=""
WindowStartupLocation="CenterOwner"
ShowInTaskbar="False"
Background="Transparent"
d:DesignWidth="200"
d:DesignHeight="200"
MaxWidth="250"
MaxHeight="250">
<xctk:BusyIndicator IsBusy="True"
HorizontalAlignment="Center"
VerticalAlignment="Center"></xctk:BusyIndicator>
</Window>
Проблема в том, что BusyIndicator
не предназначен для использования в отдельном окне
BusyIndicator является ContentControl.Это означает, что BusyIndicator может содержать один дочерний элемент в его открывающих и закрывающих тегах.
Кроме того, если вы это сделаете, первое, что показывается, это небольшой элемент управления пользовательского интерфейса (12x12 пикселей) ипосле некоторой задержки, наконец, отображается индикатор выполнения / индикатор занятости.
Указав SizeToContent='WidthAndHeight'
, xaml автоматически изменяет высоту и ширину относительно содержимого.В этом случае (12x12) осуществляется управление пользовательским интерфейсом, и через некоторое время ожидания, наконец, как указано выше, отображается индикатор занятости.Но к тому времени рендерер xaml ui уже применил SizeToContent
, и поэтому вам пришлось бы вручную перемещать индикатор выполнения.
Я не совсем уверен, как рендеринг xaml ui работает без указания SizeToContent
, но, видимо, он корректно перемещает индикатор занятости после его показа.