Желаемый результат выглядит так:
XAML:
<StackPanel Name="SPName" Orientation="Horizontal"/>
C#:
mass = new Rectangle[100];
for (int i = 0; i < Mass.Length; i++)
{
mass[i] = new Rectangle();
mass[i].VerticalAlignment = VerticalAlignment.Bottom;
mass[i].Width = SList.ActualWidth / Mass.Length;
mass[i].Height = (SList.ActualHeight - 100) * (i / 100.0);
mass[i].Fill = Brushes.Green;
mass[i].StrokeThickness = 1;
mass[i].Stroke = Brushes.Black;
SPName.Children.Add(mass[i]);
}
При реализации через ListBox получается это:
XAML:
<ListBox ItemsSource="{Binding Mass}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"
VerticalAlignment="Bottom"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
C#:
Panel parent = ((sender as Button).Parent as Panel).Parent as Panel;
mass = new Rectangle[100];
for (int i = 0; i < Mass.Length; i++)
{
mass[i] = new Rectangle();
mass[i].VerticalAlignment = VerticalAlignment.Bottom;
mass[i].Width = parent.ActualWidth / Mass.Length;
mass[i].Height = (parent.ActualHeight - 100) * (i / 100.0);
mass[i].Fill = Brushes.Green;
mass[i].StrokeThickness = 1;
mass[i].Stroke = Brushes.Black;
}
OnPropertyChanged("Mass");
Как реализовать первый вариант с помощью ListBox?
Возможно, вам нужно это:
<ItemsControl ItemsSource="{Binding Mass}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="1"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Rectangle VerticalAlignment="Bottom" Fill="Green"
Height="{Binding}" Stroke="Black" StrokeThickness="1"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
При этом ваш Mass имеет тип double[] или там IEnumerable<double> и содержит нужные высоты прямоугольников.
Получается вот такой результат:
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости