简单绑定的问题

时间:2010-09-30 03:31:12

标签: c# silverlight data-binding xaml

我正在尝试仅使用XAML将集合绑定到ListBox。它有点工作,但它只显示MyProject.mainItem(对象类型),而不是实际值。

在分配为DataContext的类中,我有:

ItemCatalog.Add(new mainItem { Ref = "555555", ItemName = "First Item" });

在包含ListBox的页面上的XAML中,我有:

<ListBox ItemsSource="{Binding ItemCatalog}">
       <DataTemplate>
             <StackPanel Margin="0,0,0,17" Width="432">
                  <TextBlock Text="{Binding Ref}" TextWrapping="Wrap"  Foreground="Black" />
                  <TextBlock Text="{Binding ItemName}" TextWrapping="Wrap" Margin="12,-6,12,0" Foreground="Black" />
             </StackPanel>
       </DataTemplate>
</ListBox>

它遍历整个ItemCatalog集合,但它不显示First Item这样的值,而只显示对象的类型。感谢

2 个答案:

答案 0 :(得分:3)

如果主要项目没有可视化表示IE的数据模板。然后它会调用该对象的ToString()进行显示。这就是你看到对象类型的原因。

为什么您的数据模板无效,是因为您试图像ListBoxItem那样插入数据模板。

您要做的是覆盖ItemTemplate

<ListBox ItemsSource="{Binding ItemCatalog}">
    <ListBox.ItemTemplate>
         <DataTemplate/>
    </ListBox.ItemTemplate>
</ListBox>

此外,您还需要将DataType中的DataTemplate属性设置为相应的类型。

希望它有所帮助。

答案 1 :(得分:0)

代码说DataTemplate是ListBox的一个项目。

尝试在<ListBox.ItemsTemplate>附近添加<DataTemplate>标记。