Wpf列表框不绑定到多个项目

时间:2015-09-07 16:25:01

标签: c# wpf xaml listbox

Xaml看起来像这样:

<ListBox Name="lbEurInsuredType" HorizontalContentAlignment="Stretch" ItemsSource="{Binding}">
                <ListBox.ItemTemplate>
                   <DataTemplate>
                    <Grid Margin="0,2">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="80"></ColumnDefinition>
                                      <ColumnDefinition Width="30"></ColumnDefinition>
                                <!--     <ColumnDefinition Width="20"></ColumnDefinition>-->
                   </Grid.ColumnDefinitions>
                   <TextBlock Text="{Binding Title}"></TextBlock>
                             <TextBox Text="{Binding Uw}"></TextBox>
                        <!--    <TextBox Text="{Binding Partner}"></TextBox>-->
                </Grid>
            </DataTemplate></ListBox.ItemTemplate>

        </ListBox>

然后在我的代码后面我有:

public DefaultSettings()
        {
            InitializeComponent();
            List<EurItem> items = new List<EurItem>
            {
                new EurItem() { Title = "Couple", Uw = 190m, Partner = 170m },
                new EurItem() { Title = "Family", Uw = 180m, Partner = 160m } 
            };

            lbEurInsuredType.ItemsSource = items;

        }

如果我只在xaml中有TextBlock,那么标题会显示在列表框中,一旦我开始介绍其他成员,它就会显示最后绑定的项目并丢失所有其他成员

2 个答案:

答案 0 :(得分:0)

这是不必要的,因为您已经在后面的代码中直接设置了它。

ItemsSource="{Binding}"

此外,您没有在后续元素上设置任何Grid.Column定义。所以他们互相重叠。

你可能想要这样的东西

<Grid Margin="0,2">
        <Grid.ColumnDefinitions>
          <ColumnDefinition Width="80"></ColumnDefinition>
          <ColumnDefinition Width="30"></ColumnDefinition>
          <ColumnDefinition Width="20"></ColumnDefinition>
         </Grid.ColumnDefinitions>
         <TextBlock Text="{Binding Title}"></TextBlock>
         <TextBox Text="{Binding Uw}" Grid.Column="1"></TextBox>
         <TextBox Text="{Binding Partner}" Grid.Column="2"></TextBox>
</Grid>

答案 1 :(得分:0)

您在几个列的public class Test { // is comment, the rest, not\u000a public static void main( String[] args) { System.out.println("See!"); } } 中放置了几个控件。默认情况下,放置在Grid内的每个项目都会显示在第一行和第一列中。

由于你没有告诉控件,否则你的所有控件都会被添加到第一行和第一列,相互重叠......所以只显示最后一个控件。

您需要使用Grid来指定每个控件应放在哪个列中。

Grid.Column