2012-09-09 158 views
0

我的应用程序中有一个ListView,它有一个ItemTemplate有三个TextBlocks。 Listview的ItemsSource属性设置为名为“units”的名为“ConversionEngine”的类中的名称...将ListView项目的子项目绑定到另一个数据

所以我的问题是:我想绑定ItemTemplate中的第二个和第三个TextBlocks到另一个List相同的“ConversionEngine”类。但我不能,因为列表视图的ItemsSource属性设置为“单位”字符串列表和ItemTemplate的所有子项继承“单位”列表。我如何将子项绑定到另一个列表中,在同一类ConversionEngine中,还是我定义的其他类中?谢谢...这里是我的代码:

的列表视图:

<ListView x:Name="allunits" **ItemsSource="{Binding units}**" SelectionMode="Single" IsItemClickEnabled="True" ItemClick="allunit_itemclick" SelectedIndex="-1" ItemTemplate="{StaticResource Standard500x130ItemTemplate}"/> 

ItemTemplate模板代码:

<DataTemplate x:Key="Standard500x130ItemTemplate"> 

     <Grid Height="110" Width="480" Margin="10" > 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="Auto"/> 
       <ColumnDefinition Width="*"/> 
      </Grid.ColumnDefinitions> 
      <Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}" Width="110" Height="110"> 
       <Image Source="{Binding Image}" Stretch="UniformToFill"/> 
      </Border> 
      <StackPanel Grid.Column="1" VerticalAlignment="Top" Margin="10,0,0,0"> 
       **<TextBlock Text="{Binding}" Style="{StaticResource TitleTextStyle}"/>** 
       **<TextBlock Text="{Binding ??}" Style="{StaticResource TitleTextStyle}/>** 
       **<TextBlock Text="{Binding ??}" Style="{StaticResource TitleTextStyle}"/>** 
      </StackPanel> 
     </Grid> 
    </DataTemplate> 

回答

0

ItemsControl的项目只能绑定到UI元素,东西可以使用相对访问来源和它们给出的datacontext的部分。我的建议是将您的不同列表合并到一个列表中,或者至少从您的绑定属性返回分组项目。因此,要么:

public class CompositeItem 
{ 
    Item item;    //item from your first list 
    Item2 item2;    //item from your second list 
    . . . 
} 

//main class 
List<CompositeItem> items; //list of combined items 

或:

public Tuple<Item, Item2 . . . > items //bind your items control to this 
{ 
    List<Tuple<Item, Item2 . . >> newListOfItems = new Tuple<Item, Item2 . . >(); 
    for(int i = 0; i < items.count; i++) 
    { 
     newListOfItems.add(new Tuple<Item, Item2 . . >(list1[i], list2[i] . . .)); 
    } 
    return newListOfItems; 
} 
+0

感谢,包裹整个列表和对象到另一个类,并创建一个列表出来,并结合,这是最终的解决方案,你提到的..谢谢,开心编码。 –

相关问题