Как центрировать BusyIndicator по центру MainWindow?

Вывод, выполняемый на консоли, представляет собой простой текст. Если терминал поддерживает unicode (большинство из них в настоящее время), вы можете использовать индексы unicode . (например, H₂) А именно, индексы находятся в диапазонах:

  • 0x208N для чисел, +, -, =, (, ) (N идет от 0 до F)
  • 0x209N для букв

Например:

In [6]: print(u'H\u2082O\u2082')
H₂O₂

Для более сложного вывода вы должны использовать язык разметки (например, HTML) или язык набора текста (например, LaTeX).

0
задан broadband 5 March 2019 в 11:53
поделиться

1 ответ

Решил его, удалив свойство 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 renderes без указания SizeToContent, но, по-видимому, он корректно перемещает индикатор занятости после его отображения.

0
ответ дан broadband 5 March 2019 в 11:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: