У меня есть список объектов, и я хочу привязать его для отображения к списку пользовательских элементов управления.
XAML код:
<Pages:MyItemsControl ItemsSource="{Binding SquadFieldPlayers}">
<Pages:MyItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas Height="180" Width="169" />
</ItemsPanelTemplate>
</Pages:MyItemsControl.ItemsPanel>
<Pages:MyItemsControl.ItemTemplate>
<DataTemplate>
<Pages:FieldItem />
</DataTemplate>
</Pages:MyItemsControl.ItemTemplate>
</Pages:MyItemsControl >
Исходный код MyItemsContol:
public class MyItemsControl : ItemsControl
{
protected override void PrepareContainerForItemOverride(DependencyObject element, object item)
{
FrameworkElement contentitem = element as FrameworkElement;
if (contentitem != null)
{
Binding leftBinding = new Binding("PositionX");
Binding topBinding = new Binding("PositionY");
contentitem.SetBinding(Canvas.LeftProperty, leftBinding);
contentitem.SetBinding(Canvas.TopProperty, topBinding);
base.PrepareContainerForItemOverride(element, item);
}
}
}
В другой теме. Здесь я привязал свойства position моего объекта к свойствам Left и Top (чтобы они отображались в нужном месте на холсте).
Вопрос1: как я могу настроить другое свойство элемента управления FieldItem (у меня есть textBlock внутри и я хочу, чтобы он отображал другие элементы данных из объектов данных)?
Вот мой элемент управления FieldItem:
<UserControl x:Class="VfmElitaSilverlightClientView.Pages.FieldItem" ...>
<Grid Height="16" Width="16">
<Ellipse Fill="Yellow" Height="16" Width="16">
</Ellipse>
<TextBlock Name="TeamNumberTextBlock" Text="22" TextAlignment="Center" FontStyle="Italic" />
</Grid>
и я хочу заполнить TeamNuberTextBlock значимыми данными.
Вопрос2: почему объект DataContext из FieldItem не установлен для моего объекта данных?
Спасибо!