WPF ListBox - 如何显示具有多列的数据表中的值?

时间:2012-06-19 14:01:04

标签: c# wpf data-binding

我遇到了问题,我有一个数据表数据有3列(ID,NAME,QUANTITY),我想将它与ListBox绑定,并使ListBox显示来自NAME列的值和QUANTITY,否则当我双击所选项目时,它会发送ID值,这是我的XAML:

<ListBox  HorizontalAlignment="Left" Margin="6,0,0,0" Name="ListBox1" VerticalAlignment="Top" Height="600" Width="321">
                        <ListBox.ItemContainerStyle>
                            <Style TargetType="{x:Type ListBoxItem}">
                                <EventSetter Event="MouseDoubleClick" Handler="ListBox1Item_DoubleClick" />
                            </Style>
                        </ListBox.ItemContainerStyle>
                        <ListBox.Resources>
                            <DataTemplate x:Key="listBoxTemplate">
                                <DockPanel >
                                    <TextBlock FontWeight="Bold" Text="{Binding NAME}"
                  DockPanel.Dock="Left"
                  Margin="5,0,10,0" Width="100"/>

                                    <TextBlock Text="{Binding QUANTITY} "   Foreground="Green" FontWeight="Bold" />
                                </DockPanel>
                            </DataTemplate>
                        </ListBox.Resources>
                    </ListBox> 

这是我背后的代码:

...
            ListBox1.ItemsSource = data.DefaultView;
            ListBox1.SelectedValuePath = "ID";
...

但它没有显示任何东西,有些错误?请帮忙!感谢您阅读本文!

1 个答案:

答案 0 :(得分:1)

您需要设置ListBox.ItemTemplate。 在您使用密钥定义模板时,该模板不会在任何地方使用。

<ListBox.ItemTemplate>
    <DataTemplate>
        <DockPanel >
            <TextBlock Text="{Binding NAME}" FontWeight="Bold"
                       DockPanel.Dock="Left"
                       Margin="5,0,10,0" Width="100" />
            <TextBlock Text="{Binding QUANTITY}" FontWeight="Bold"
                       Foreground="Green" />
        </DockPanel>
    </DataTemplate>
</ListBox.ItemTemplate>