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 内のすべての TextBlocks の幅をそれに設定するにはどうすればよいですか?

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 に答える