Когда я запустил приложение, я ожидаю увидеть 5 кнопок (см. ItemsControl \ DataTemplate \ Button в моем XAML ниже) с содержимым типа «55/42», обозначающим максимальную максимальную температуру объявления. Однако окно пустое. Я знаю, что это связано с ItemsControl, потому что я могу отображать данные без использования ItemsControl. Может ли кто-то поймать мою ошибку?Почему элемент ItemsControl в следующем WPF XAML ничего не показывает?
<Window x:Class="Embed_WeatherSummaryAsItemsControl_ToMain.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
FocusManager.FocusedElement="{Binding ElementName=InputCity}"
Title="Weather App" Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="30"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<TextBox x:Name="InputCity" Grid.Row="0" Width="200" Text="{Binding CityAndOptionalCountry}"></TextBox>
<Button Grid.Row="0" Width="50" Content="Go" Margin="260,0,0,0" Command="{Binding GetWeatherReportCommand}"></Button>
<ItemsControl Grid.Row="1" ItemsSource="{Binding WeatherForecastSummaryCollection}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Content="{Binding Path=MaxMinTemperature}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
Как показано ниже, «WeatherForecastSummaryCollection» коллекция собственности на классе ViewModel и «MaxMinTemperature» является свойством элемента в коллекции.
public class MainWindowViewModel : ViewModelBase
{
....
private List<WeatherForecastSummary> mWeatherForecastSummaryCollection;
public List<WeatherForecastSummary> WeatherForecastSummaryCollection
{
get { return mWeatherForecastSummaryCollection; }
set
{
mWeatherForecastSummaryCollection = value;
OnPropertyChanged("WeatherForecastSummaryCollection");
}
}
.....
}
public class WeatherForecastSummary
{
public string MaxMinTemperature { get; set; }
}
Спасибо за помощь!
Как вы заполнить коллекцию и привязать элемент управления к нему? –
Можете ли вы показать код, в котором вы фактически создаете экземпляр коллекции и добавить к ней 5 элементов? – andreask
Я предполагаю, что вы сначала присвоили пустой список «WeatherForecastSummaryCollection», а затем добавили 5 элементов (что является стандартным способом). Но List не отправляет уведомление об изменениях содержимого. Измените тип 'List' на 'ObservableCollection ' поможет. –
gomi42