2010-08-23 69 views
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對象沒有設置爲我的數據對象?

謝謝!

回答

0

我不知道這是如何工作,但爲了讓我的控制綁定到數據對象實際上並不需要。屬性映射使用通常的綁定完成:

<UserControl x:Class="VfmElitaSilverlightClientView.Pages.FieldItem" ...>  
<Grid Height="16" Width="16"> 
    <Ellipse Fill="Yellow" Height="16" Width="16"> 
    </Ellipse> 
    <TextBlock Name="TeamNumberTextBlock" Text="**{Binding TeamNumber}**" 
       TextAlignment="Center" FontStyle="Italic" /> 
</Grid> 

我會理解這一點的解釋。預先感謝您的努力!

+0

說明:本來我希望數據對象綁定控件在'MyCustomList'類的'PrepareContainerForItemOverride'方法中進行設置。但實際上這是在稍後完成的,並且通常的綁定應用於這種情況。 – Budda 2010-08-27 11:55:48

相關問題