Изменить размер индикатора выполнения

#c# #xaml #win-universal-app #uwp

#c# #xaml #win-универсальное приложение #uwp

Вопрос:

У меня есть индикатор выполнения, но точки слишком маленькие, как я могу сделать его больше? Я не нашел ни одного свойства, которое могло бы изменять размер точек. Изменение высоты / ширины только области, в которой могут перемещаться точки

Xaml код

 <Grid // here width ="2560" height="1600"
  <ProgressBar
        Grid.Row="0"
        Grid.Column="1"
        IsIndeterminate="True"
        Visibility="{Binding MainInstance.Loading, Converter={StaticResource BooleanToVisibilityConverter}}" 
        VerticalAlignment="Stretch" 
        HorizontalAlignment="Stretch"/>
</Grid
  

Комментарии:

1. Размер блоков ProgressBar зависит от ширины / высоты.

2. @Joel изменил ширину / высоту с Auto (300/4) на 1000/1000, и ничего не изменилось, точки просто перемещаются в другую зону, но точки маленькие

Ответ №1:

Есть несколько вариантов решения этой проблемы, вам решать, какой из них вы выберете:

  • Измените стиль по умолчанию ProgressBar и увеличьте Ellipse Width Height свойства и. Вы можете сделать это в Blend или скопировав стиль из

C:Program Files (x86) Windows Kits10DesignTimeCommonConfigurationNeutralUAP10.0.14393.0Genericgeneric.xaml

  • Используйте ViewBox элемент управления, чтобы обернуть вокруг ProgressBar . Этот элемент управления изменяет размер всего содержимого до доступного размера.
  • Создайте шаблонный элемент управления с вашими собственными свойствами настроек шаблона.

Я создал небольшой пример на GitHub, чтобы показать вам код для всех возможностей.

введите описание изображения здесь

Комментарии:

1. Это лучше, чем я.

2. Это лучше, чем я.

3. У меня проблемы с viewBox. Когда я делаю большую ширину и маленькую высоту, мои круги больше, чем высота окна просмотра, как это исправить? Я хочу, чтобы это выглядело как в вашем примере

4. Вы можете увидеть код на GitHub (я сейчас не на Win10). Это объяснение того, как viewBox работает в WPF (очень похоже на UWP). Но редактирование шаблона, на мой взгляд, является лучшим решением.

Ответ №2:

Самый простой способ изменить размер точек ProgressBar — использовать ScaleTransform:

 <ProgressBar ...>
    <ProgressBar.RenderTransform>
        <ScaleTransform ScaleX="2" ScaleY="2" />
    </ProgressBar.RenderTransform>
</ProgressBar>
  

Ответ №3:

В моем случае (WinUI3 SDK1.1.0) у меня была тонкая строка размером 1 пиксель, и это помогло мне использовать свойство minHeight вместо высоты. Я надеюсь, что minHeight также поможет вам с пунктирной линией.

 <StackPanel BorderThickness="0" BorderBrush="LightGray" Padding="12">
    <muxc:ProgressBar 
    Value="{x:Bind Path=XamlProductionViewModel.XamlCurrentProgress, Mode=OneWay}" 
    IsIndeterminate="{x:Bind Path=XamlProductionViewModel.XamlIsIndeterminate, Mode=OneWay}"
    Visibility="{x:Bind Path=XamlProductionViewModel.XamlProgressVisibility, Converter={StaticResource booleanToVisibilityConverter}, Mode=OneWay}" 
    Foreground="AliceBlue" 
    Background="Transparent" 
    Minimum="0" 
    Maximum="100" 
    BorderThickness="0" 
    Margin="0" 
    MinHeight="25" 
    Width="300"/>
</StackPanel>
  

Ответ №4:

ProgressRing не поддерживает никаких свойств для изменения ширины и высоты точек, и когда в ProgressRing будет больше места, точки будут самыми большими. Вы можете использовать сетку, которая получает индикатор выполнения, а сетка является постоянной позицией. Вы используете Grid.Row="0" Grid.Column="1" VerticalAlignment="Top" и вы должны написать код в Grid.Вы должны предоставить сетке большое пространство. ProgressBar должен использовать HorizontalAlignment="Stretch" и то же самое для VerticalAlignment .У вас большая ширина и большая высота, точки будут иметь большую ширину и большую высоту.

     <ProgressRing Margin="10,10,10,10"
                 IsActive="True"
                 Visibility="{x:Bind View.Visibility,Mode=OneWay}"
                 HorizontalAlignment="Stretch"
                 VerticalAlignment="Stretch" />
  

Я пишу в верхней сетке.Вы можете видеть, что в моем приложении ProgressRing есть большие точки.

http://jycloud.9uads.com/web/GetObject.aspx?filekey=16bcfec973e910632e04b3990c274a1c

Комментарии:

1. В ячейке сетки (0,1) много места, и я обновил свой код. Это правильно? Но мои точки все еще маленькие

2. Вы пытаетесь установить ширину сетки = 100 или больше. И ProgressRing должен устанавливать HorizontalAlignment и VerticalAlignment для растягивания, а не для любой ширины, высоты и поля.

3. Я сделал это, моя сетка равна 2560 / 1600. И вы можете увидеть мой код XAML. Но точки маленькие, и еще 1 — это не кольцо, а просто строка, потому что IsIndeterminate=»True»

4. Вы уверены, что сетка вашего ProgressRing равна 2560/1600, или вы пытаетесь установить для вашего ProgressRing значение 2560/1600

5. Сетка.Строка =»0″ и сетка. Column=»1″ — это сделать ширину ProgressRing не такой, как сетка.