Я пытаюсь отобразить каждый Block
(мой пользовательский класс с некоторыми дополнительными свойствами) GameBoard.BlockList
в отдельной ячейке единой сетки.ItemsControl + UniformGrid: отображение пользовательского класса в каждой ячейке
Таким образом, будет отображаться строка Common.XY.Block
, что я понимаю. Блок не является UIElement
.
<ItemsControl Grid.Row="1" Grid.Column="1" ItemsSource="{Binding GameBoard.BlockList}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Background="Transparent" Rows="{Binding GameBoard.Rows}" Columns="{Binding GameBoard.Columns}" Margin="1,1,1,1"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
Так я думал, что я мог бы использовать в качестве DataTemplate
soemthing, как это:
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border BorderThickness="1" BorderBrush="Black">
<Rectangle Fill="Transparent" Drop="Rectangle_Drop" AllowDrop="True" Width="50" Height="50"/>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
Это добавит в каждой ячейке UniformGrid
в Rectangle
, в окружении Border
, но у меня нет доступ к моему пользовательскому блоку.
Я точно не знаю, как достичь своей цели здесь. Я хочу использовать GameBoard
как «основной источник», где храню данные и работаю с ним.
Как я должен использовать UniformGrid
сохранить свою felxiblity с ItemsControl
одной с одной стороны и использовать все данные GameBoard
на другой стороне?
DataContext от границы и прямоугольник в Виль ItemTemplate l быть объектом Block из ItemsSource элемента ItemsControl. Вы можете привязываться к любому из своих свойств в ItemTemplate, как обычно. ItemTemplate определяет внешний вид каждого блока. – mm8
Не уверен, правильно ли я понимаю. Чтобы нарисовать изображение: мой блок-объект кодирует границу, а граница содержит прямоугольник? И как мне получить доступ к этому теперь из кода? –
Доступ к объектам Block в классе, где определен исходный набор. т.е. в модели представления. Представление и разметка XAML должны определять только * внешний вид * блока. Ничего больше. – mm8