2

单击按钮时,我正在阅读 CSV 文件,将 ',' 替换为 '\t' 并将其写入堆栈面板。

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        for (int i = 0; i < r.variables.Count; i++)
        {
            _people.Add(new TextBlock() { Text = r.variables[i], HorizontalAlignment = System.Windows.HorizontalAlignment.Right });//.ToString() });
            StackPanel stp = new StackPanel() { Orientation = Orientation.Vertical };

            TextBlock tb = new TextBlock() {Text = r.variables[i]};

            stp.Children.Add(tb); 

            _secondStack.Children.Add(stp);
        }

        foreach (StackPanel sp in _secondStack.Children)
        {

            foreach (TextBlock tb in sp.Children)
            {
                Size desiredSize = new Size();
                tb.Measure(this.availableSize);
                desiredSize = tb.DesiredSize;
            }
        }
    }

从文件中,一些包含比其他更长的字符串,因此标题中的 TextBlocks 比下面的 TextBlocks 宽。

如何获得嵌入式 StackPanel 中最宽 TextBlock 的宽度,并将嵌入式 StackPanel 内所有 TextBlock 的宽度设置为该宽度?

4

1 回答 1

3

填充后,这StackPanel就是您获得最大Width并将其设置为所有其他TextBoxes 的方式:

 double largestWidth = stackPanel.Children.OfType<TextBox>().OrderByDescending(
         textbox => textbox.ActualWidth).First().ActualWidth;

 foreach (var textBox in stackPanel.Children.OfType<TextBox>())
 {
      textBox.ActualWidth = largestWidth;
 }
于 2013-09-13T00:00:46.877 回答