#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 не такой, как сетка.