2015-09-07 3 views
1

Xaml выглядит следующим образом:Wpf Listbox не связывается с несколькими элементами

<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> 
Смежные вопросы