C# Wpf列表框没有';不能绑定到多个项目
Xaml如下所示: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">
<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个项目显示,但是在第二和第三项上面,我想给你一个标题,你知道我怎么做吗?最好你提出一个新的问题,这样其他与你有类似问题的人可以很容易地联系起来。我很乐意回答你的问题。:)