Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Wpf列表框没有';不能绑定到多个项目_C#_Wpf_Xaml_Listbox - Fatal编程技术网

C# Wpf列表框没有';不能绑定到多个项目

C# Wpf列表框没有';不能绑定到多个项目,c#,wpf,xaml,listbox,C#,Wpf,Xaml,Listbox,Xaml如下所示: <ListBox Name="lbEurInsuredType" HorizontalContentAlignment="Stretch" ItemsSource="{Binding}"> <ListBox.ItemTemplate> <DataTemplate> <Grid Margin="0,2">

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;

        }
public DefaultSettings()
{
初始化组件();
列表项=新列表
{
新EurItem(){Title=“Couple”,Uw=190m,Partner=170m},
新EurItem(){Title=“Family”,Uw=180m,Partner=160m}
};
LBEURSuredType.ItemsSource=项目;
}

发生的情况是,如果我在xaml中只有TextBlock,那么当我开始介绍其他成员时,标题就会显示在列表框中,然后它会显示最后一个绑定的项目,并释放所有其他项目。

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

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>

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

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>

您将几个控件放置在一个包含多个列的
网格中。默认情况下,放置在
网格中的每个项目都显示在第一行和第一列中

由于您没有告诉控件其他内容,因此所有控件都将添加到第一行和第一列,彼此重叠。。。因此,只显示最后一个控件

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

<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}" Grid.Column="1"></TextBox>
               <TextBox Text="{Binding Partner}" Grid.Column="2"></TextBox>
           </Grid>
       </DataTemplate>
   </ListBox.ItemTemplate>
</ListBox>

您将几个控件放置在一个包含多个列的
网格中。默认情况下,放置在
网格中的每个项目都显示在第一行和第一列中

由于您没有告诉控件其他内容,因此所有控件都将添加到第一行和第一列,彼此重叠。。。因此,只显示最后一个控件

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

<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}" Grid.Column="1"></TextBox>
               <TextBox Text="{Binding Partner}" Grid.Column="2"></TextBox>
           </Grid>
       </DataTemplate>
   </ListBox.ItemTemplate>
</ListBox>


我已删除此项,但它没有difference@bilpor我添加了更多。我可以问另一个与此相关的快速问题吗……。我现在有3个项目显示,但是在第二和第三项上面,我想给你一个标题,你知道我怎么做吗?最好你提出一个新的问题,这样其他与你有类似问题的人可以很容易地联系起来。我很乐意回答你的问题。:)我已经移除了这个,但它没有difference@bilpor我添加了更多。我可以问另一个与此相关的快速问题吗……。我现在有3个项目显示,但是在第二和第三项上面,我想给你一个标题,你知道我怎么做吗?最好你提出一个新的问题,这样其他与你有类似问题的人可以很容易地联系起来。我很乐意回答你的问题。:)