У меня есть класс ShapeGrid, который содержит основную информацию, такую как размер, и содержит список Shape. При печати каждого объекта в Shapes, как получить свойство ShapeSize из ShapeGrid?
public class ShapeGrid
{
public List<Shape> Shapes { get; set; }
public int GridSize { get; private set; }
public double ShapeSize { get; private set; }
}
public class Shape
{
public Brush Color { get; set; }
public int Id { get; set; }
}
При использовании ContentControl я могу получить класс контейнера, но не могу просмотреть список всех фигур, не выписывая их одну за другой.
<ContentControl Content="{Binding ShapeGrid}" Grid.Row="2" Grid.Column="2">
<ContentControl.ContentTemplate>
<DataTemplate>
<WrapPanel>
<Rectangle Fill="{Binding Shapes[0].Color}" Height="{Binding ShapeSize}" Width="{Binding ShapeSize}" />
</WrapPanel>
</DataTemplate>
</ContentControl.ContentTemplate>
</ContentControl>
При использовании ItemsSource я не смогу получить доступ к значениям контейнера.
<ItemsControl ItemsSource="{Binding ShapeGrid.Shapes}" Grid.Row="2" Grid.Column="2">
<ItemsControl.ItemTemplate>
<DataTemplate>
<WrapPanel>
<Rectangle Fill="{Binding Color}" Height="20" Width="20" />
//this is what I want to
//<Rectangle Fill="{Binding Color}" Height="{Binding ShapeGrid.ShapeSize}" Width="{Binding ShapeGrid.ShapeSize}" />
</WrapPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Мне нужны ShapeSize от ShapeGrid и Color from Shape, оба в теге Rectangle. Есть ли способ сделать это?
Редактировать: я мог бы поместить свойство ShapeSize в каждый отдельный Shape, но представляю, было ли это какое-либо внешнее значение, например, windowSize и т. Д.