0
我有一个对象列表,并且希望为了显示目的而绑定到自定义控件列表。Silverlight 4:如何在自定义列表中设置控件的属性
XAML代码: 'MyItemsContol' 的
<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 >
的源代码:
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-properties绑定到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:为什么FieldItem的DataContext对象没有设置为我的数据对象?
谢谢!
说明:本来我希望数据对象绑定控件在'MyCustomList'类的'PrepareContainerForItemOverride'方法中进行设置。但实际上这是在稍后完成的,并且通常的绑定应用于这种情况。 – Budda 2010-08-27 11:55:48