Файлы, которые я создал и на которые будет ссылаться в этом вопросе, следующие:
TechnicainSelectionView.xaml
TechnicianSelectionView.cs
TechnicianSelectionViewModel.cs
Technician.cs (Code First Entity)
У меня есть следующий xaml в моем TechnicanSelectionView.xaml
<UserControl xmlns etc... here"
d:DesignHeight="48" d:DesignWidth="300">
<Grid>
<StackPanel>
<Label Content="Select a Technican to run the test" FontWeight="Bold"></Label>
<ComboBox ItemsSource="{Binding Technicians, Mode=TwoWay}"></ComboBox>
</StackPanel>
</Grid>
</UserControl>
Свойство Technicians, для которого ItemSource установлено для привязки к состояниям, что он Cannot resolve Technicians due to an unknown DataContext.
Итак, если мы посмотрим на мой код TechnicianSelectionView.cs...
public partial class TechnicianSelectionView : UserControl
{
public TechnicianSelectionViewModel ViewModel { get; private set; }
public TechnicianSelectionView()
{
InitializeComponent();
Technician.GenerateSeedData();
ViewModel = new TechnicianSelectionViewModel();
DataContext = ViewModel;
}
}
... мы видим, что я устанавливаю представление DataContext в свой TechnicianSelectionViewModel...
public class TechnicianSelectionViewModel : ViewModelBase
{
public ObservableCollection<Technician> Technicians { get; set; }
public TechnicianSelectionViewModel()
{
Technicians = new ObservableCollection<Technician>();
}
public bool IsLoaded { get; private set; }
public void LoadTechnicians()
{
List<Technician> technicians;
using (var db = new TestContext())
{
var query = from tech in db.Technicians
select tech;
foreach (var technician in query)
{
Technicians.Add(technician);
}
}
IsLoaded = true;
}
}
Техники - это свойство на моем ViewModel...
Итак, если установить DataContext для представления, почему он не может разрешить техников в ViewModel в качестве свойства DataContext/, которое он будет связывать с?
EDIT:
В соответствии с примечанием в комментарии ниже. Это проблема времени проектирования, а не время компиляции. Я должен был указать это в начале.