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