У меня есть простая привязка данных в приложении Windows 8.1 с использованием C#/XAML, а также MVVM-Light-Toolkit, и она не работает. Я хочу отобразить список, в котором указано время с 6 часов утра до 6 часов на следующий день. Вот соответствующий код:Простая привязка не работает
public class DayViewViewModel : ViewModelBase
{
private ObservableCollection<DateTime> _TimesList = null;
/// <summary>
/// Sets and gets the TimesList property.
/// Changes to that property's value raise the PropertyChanged event.
/// </summary>
public ObservableCollection<DateTime> TimesList
{
get
{
return _TimesList;
}
set
{
if (_TimesList == value)
{
return;
}
RaisePropertyChanging(TimesListPropertyName);
_TimesList = value;
RaisePropertyChanged(TimesListPropertyName);
}
}
public void CreateTimes()
{
TimesList = new ObservableCollection<DateTime>();
for (int i = 0; i < 24; i++)
{
TimesList.Add(DateTime.MinValue.AddHours(6 + i));
}
}
}
Теперь связывание в XAML EDIT: Полная иерархия отображается в настоящее время:
<ListView>
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.7*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<ListView Grid.Column="0"
ItemsSource="{Binding Day.TimesList, Mode=TwoWay, Source={StaticResource Locator}}"
ItemTemplate="{Binding Source={StaticResource DayCalendarTimesItemTemplate}}">
</ListView>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
И шаблон:
<DataTemplate x:Key="DayCalendarTimesItemTemplate">
<Grid Height="80">
<TextBox Text="{Binding Date}"/>
</Grid>
</DataTemplate>
Ну, я думаю, что я Я привязываюсь к неправильному объекту в TextBox? Я очень расстроен этой проблемой - я просто не могу понять, что здесь не так.
EDIT: Информация о локаторе:
локатор стандартного локатор обеспечивается MVVM-Light Toolkit:
Вот класс с регистрацией этого ViewModel:
public class ViewModelLocator
{
/// <summary>
/// Initializes a new instance of the ViewModelLocator class.
/// </summary>
public ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
SimpleIoc.Default.Register<DayViewViewModel>();
}
public DayViewViewModel Day
{
get
{
return ServiceLocator.Current.GetInstance<DayViewViewModel>();
}
}
}
Локатор создается в App.xaml:
<Application.Resources>
<ResourceDictionary>
<vm:ViewModelLocator x:Key="Locator"/>
[...]
</ResourceDictionary>
</Application.Resources>
Большое спасибо за вашу помощь!
FunkyPeanut
Вы попробовали ' '? –
dkozl
Да - к сожалению – FunkyPeanut
Отображает ли он список пустых 'TextBoxes' или вообще ничего? – dkozl