2017-02-16 10 views
0

Я новичок в MVVM и xaml. Я создал combobox для списка PhoneTypes, но поскольку я установил привязку к PhoneTypes, загруженным из базы данных, больше не отображается в представлении (во время выполнения).My bound combobox не отображает

данных

string SQLPhoneTypes = "select phone_type_id, description from phone_types"; 

//get the phone types for lookups 

MySqlCommand cmdGetTypes = new MySqlCommand(SQLPhoneTypes, ConnectData.connection); 
MySqlDataReader drDataTypes = cmdGetTypes.ExecuteReader(); 
_contact.PhoneTypes = new List<ContactModel.PhoneType>(); 

while (drDataTypes.Read()) 
{ 
    _contact.PhoneTypes.Add(new ContactModel.PhoneType() 
    { 
     PhoneTypeID = drDataTypes.GetInt16("phone_type_id"), 
     Description = drDataTypes.GetString("description") 
    }); 
} 

Модель

public List<PhoneType > PhoneTypes 
{ 
    get { return _phonetypes; } 
    set { _phonetypes = value; OnPropertyChanged("PhoneTypes"); } 
} 

ViewModel

public ObservableCollection<PhoneTypesLoaded> PhoneTypes { get; set; } = new ObservableCollection<PhoneTypesLoaded>(); 

public class PhoneTypesLoaded 
{ 
    public int phoneTypeID { get; set; } 
    public string description { get; set; } 
} 

if (PhoneTypes.Count == 0) 
{ 
    ContactData.LoadPhoneTypes (c); 
    for (int iCounter = 0; iCounter < c.PhoneTypes.Count; iCounter++) 
    { 
     PhoneTypes.Add(new PhoneTypesLoaded { phoneTypeID = c.PhoneTypes[iCounter].PhoneTypeID, description = c.PhoneTypes[iCounter].Description }); 
    } 
} 

Посмотреть

<GroupBox x:Name="grpPhone" Grid.Column="1" Grid.Row="1" VerticalAlignment="Top" HorizontalAlignment="Left" Height="51" Width="200" BorderBrush="{x:Null}" BorderThickness="0"> 
     <ScrollViewer x:Name="pnScrollPhone" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled"> 
      <StackPanel x:Name="pnPhone" Orientation="Vertical" Grid.ColumnSpan="1" HorizontalAlignment="Left" VerticalAlignment="Top" IsEnabled="True"> 
       <ItemsControl ItemsSource="{Binding Path=Phones}"> 
        <ItemsControl.ItemTemplate> 
         <DataTemplate> 
          <Grid> 
           <Grid.ColumnDefinitions> 
            <ColumnDefinition Width="30"/> 
            <ColumnDefinition Width="170" /> 
           </Grid.ColumnDefinitions> 
           <ItemsControl ItemsSource="{Binding Path=PhoneTypes}"> 
            <ItemsControl.ItemTemplate> 
             <DataTemplate> 
              <ComboBox x:Name="cboPhoneType" ItemsSource="{Binding description}" Grid.Column="0"/> 
             </DataTemplate> 
            </ItemsControl.ItemTemplate> 
           </ItemsControl> 
           <TextBox x:Name="txtPhone" Text="{Binding phoneNumber, Mode=TwoWay}" Grid.Column="1"/> 
          </Grid> 
         </DataTemplate> 
        </ItemsControl.ItemTemplate> 
       </ItemsControl> 
      </StackPanel> 
     </ScrollViewer> 
    </GroupBox> 

Любые идеи, что я делаю неправильно? Заранее спасибо

ответ

0

Это было разрешено через чат - ответ заключался в том, чтобы включить в телефонный список список > PhoneTypes, который затем может быть привязан к ComboBox.

Кроме того, внутренний ItemsControl был не нужен, и был удален

+0

Является ли это только выпадающий, который не отображается, или это txtPhone TextBox не показывая ни? –

+0

Я только что изменил его, как вы предложили, я не заметил, что вы удалили над ним шаблон ItemsControl и Data. Это выглядит как этот –

+0

< ColumnDefinition Ширина = "170" />< /Grid.ColumnDefinitions>