提问人:jasonzs 提问时间:10/24/2023 最后编辑:Andrew KeepCodingjasonzs 更新时间:10/24/2023 访问量:47
如何在WinUI 3中更改ProgressBarTrackHeight高度?
How to change the ProgressBarTrackHeight height in WinUI 3?
问:
我想在 WinUI-3 中更改进度条的 ProgressBarTrackHeight 的高度。我不知道该怎么做,请帮我一个代码示例。
<ProgressBar Width="130" Value="30" />
答:
0赞
Andrew KeepCoding
10/24/2023
#1
GitHub 存储库中存在有关此问题的问题。
作为解决方法,在问题得到解决之前,您可以创建一个自定义:ProgressBar
public class CustomProgressBar : ProgressBar
{
private long _heightPropertyChangedCallBackToken;
public CustomProgressBar() : base()
{
Loaded += OnLoaded;
Unloaded += OnUnloaded;
}
private void OnLoaded(object sender, RoutedEventArgs e)
{
_heightPropertyChangedCallBackToken = RegisterPropertyChangedCallback(HeightProperty, OnHeightPropertyChanged);
ApplyHeight();
}
private void OnUnloaded(object sender, RoutedEventArgs e)
{
UnregisterPropertyChangedCallback(HeightProperty, _heightPropertyChangedCallBackToken);
}
private void ApplyHeight()
{
foreach (FrameworkElement element in this.FindDescendants()
.OfType<FrameworkElement>()
.Where(x => x is Grid or Rectangle))
{
element.Height = Height;
}
}
private void OnHeightPropertyChanged(DependencyObject sender, DependencyProperty dp)
{
ApplyHeight();
}
}
现在该属性应该可以正常工作:Height
<local:CustomProgressBar
Height="50"
Width="130"
Value="30" />
请注意,它来自 CommunityToolkit.WinUI.Extensions NuGet 包。FindDescendants
更新
在 GitHub 存储库中,对于不会动态更改的情况,建议了一个更好的选项。您只需要设置 :Height
ProgressBar
MinHeight
<Grid>
<Grid.Resources>
<x:Double x:Key="ProgressBarTrackHeight">50</x:Double>
</Grid.Resources>
<ProgressBar
MinHeight="{StaticResource ProgressBarTrackHeight}"
Maximum="100"
Value="70" />
</Grid>
评论