【发布时间】:2019-01-14 10:04:00
【问题描述】:
有一个StackPanel
<StackPanel x:Name="sp1" Orientation="Horizontal" BorderBrush="Black" BorderThickness="1" />
用矩形动态填充:
var values = new[] { 30, 50, 20 };
foreach (int val in values)
{
sp1.Children.Add(new Rectangle
{
// Width = perecntage, not supported on Rectangle
VerticalAlignment = VerticalAlignment.Stretch,
Fill = new SolidColorBrush(colors.Pop()),
});
}
Width 必须是基于val 的父级宽度的比例。
我尝试通过SizeChanged 事件设置它,但这仅适用于放大。缩小窗口不会恢复宽度。
sp1.SizeChanged += (sender, args) =>
{
int i = 0;
foreach (var val in values)
{
var prop = (double)val / valuesSum;
var r = (Rectangle)sp1.Children[i++];
r.Width = (int)(prop * args.NewSize.Width);
}
}
唯一的目标是有一个按比例划分和拉伸的条形图。有什么想法吗?
【问题讨论】: