2015-09-07 70 views
1

XAML中看起來是這樣的:WPF列表框不會綁定到多個項目

<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; 

     } 

什麼情況是,如果我只有TextBlock的在xaml中,當標題顯示在列表框中時,只要我開始介紹其他成員,就會顯示已綁定的最後一個項目,並將所有其他項目都刪除。

回答

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> 
+0

我已刪除了這一點,但它並沒有區別 – bilpor

+0

@bilpor我增加了更多。 –

+0

我可以問另一個快速相關的問題........我現在有3個項目顯示,但第二和第三項以上我想給一個頭你有什麼想法我可以做到這一點? – bilpor

0

你把幾個控件在Grid幾個列。默認情況下,放置在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>