Я новичок в 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>
Любые идеи, что я делаю неправильно? Заранее спасибо
Является ли это только выпадающий, который не отображается, или это txtPhone TextBox не показывая ни? –
Я только что изменил его, как вы предложили, я не заметил, что вы удалили над ним шаблон ItemsControl и Data. Это выглядит как этот –