【问题标题】:UWP Layout Cycle inside StackPanel when resizing children调整子项大小时,StackPanel 内的 UWP 布局循环
【发布时间】:2018-01-06 21:41:30
【问题描述】:

我有一个 StackPanel 和 2 个孩子,我需要根据 StackPanels 的大小调整它们的大小。我将一个事件处理程序附加到SizeChangedStackPanel 并在那里调整元素的大小。问题是事件处理程序一次又一次地被触发,直到应用程序崩溃。有什么关系?

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

标签: c# uwp


【解决方案1】:

这是因为您更改了 TextBlock 的 FontSize。它触发自定义 StackPanel 的 sizechanged 事件。 你应该考虑你需要什么样的控制。 您将自定义堆栈面板与 sizechanged 事件一起使用的目的是什么?

另外,FontSize 与 TextBlock 的高度不同

【讨论】:

  • 我最终按照@Justin XL 的建议做了,继承了UserControl
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-14
  • 2012-06-01
  • 1970-01-01
  • 2011-08-31
  • 2015-04-30
相关资源
最近更新 更多