0

我的应用程序中有一个 Listview,它的 ItemTemplate 具有三个 TextBlocks。Listview 的 ItemsSource 属性在我的名为“ConversionEngine”的类中设置为名为“units”的列表...

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

列表视图:

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

项目模板代码:

<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>
4

1 回答 1

0

Itemscontrol 项只能绑定到 UI 元素、可以使用相关源访问的事物以及给定它们的部分数据上下文。我的建议是将您的不同列表合并到一个列表中,或者至少从您的绑定属性中返回分组项目。所以要么:

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;
}
于 2012-09-09T16:18:26.830 回答