2010-08-23 73 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

相关问题