我有一个StackPanel
有2个孩子,我需要根据StackPanel
的大小调整大小。我在StackPanel
的SizeChanged
附加了一个事件处理程序,并在那里调整元素的大小。问题是事件处理程序被一次又一次地触发,直到应用程序崩溃。这是怎么回事?调整儿童大小时在StackPanel中的UWP布局周期
class BasicStatusTile : StackPanel {
private TextBlock TopText { get; set; }
private TextBlock BottomText { get; set; }
public BasicStatusTile() {
InitializeComponent();
}
private void InitializeComponent() {
TopText = new TextBlock() {
Text = "0",
HorizontalAlignment = Windows.UI.Xaml.HorizontalAlignment.Stretch,
TextAlignment = Windows.UI.Xaml.TextAlignment.Center,
FontSize = 48
};
BottomText = new TextBlock() {
Text = "Speed (km/h)",
HorizontalAlignment = Windows.UI.Xaml.HorizontalAlignment.Stretch,
VerticalAlignment = Windows.UI.Xaml.VerticalAlignment.Bottom,
TextAlignment = Windows.UI.Xaml.TextAlignment.Center
};
base.Children.Insert(0, TopText);
base.Children.Insert(1, BottomText);
base.Background = new SolidColorBrush(Colors.White);
base.SizeChanged += BasicStatusTile_SizeChanged;
}
private void BasicStatusTile_SizeChanged(object sender, Windows.UI.Xaml.SizeChangedEventArgs e) {
double third = base.ActualHeight/6;
TopText.FontSize = third * 4;
BottomText.FontSize = third;
}
}
'StackPanel'应该是一个主持人,你把所有的UI元素。你不应该这样扩展它。这里应该使用'UserControl'。 –