У меня вопрос о том, как загружаются представления.У меня есть этот пример кода, показанный ниже представления, которое загружается правильно:
[ViewExport(RegionName = RegionNames.LeftRegion)]
[PartCreationPolicy(CreationPolicy.Shared)]
public partial class EmployeeListView : UserControl
{
[ImportingConstructor]
public EmployeeListView(EmployeeListViewModel viewModel)
{
InitializeComponent();
//this.DataContext = viewModel;
}
[Import]
public EmployeeListViewModel Model
{
get
{
return DataContext as EmployeeListViewModel;
}
set
{
DataContext = value;
}
}
}
Примечания по поводу кода выше:
- Я добавил атрибут [ImportingConstructor] в параметризованный конструктор, которыйПередача в ViewModel.
- У меня также есть атрибут [Import] для установщика ViewModel, поэтому я могу назначить DataContext.
Однако в демонстрационной версии Stocktrader загрузка представленийсделано по-другому.Посмотрите, например, на файл PositionSummaryView.xaml.cs.
[ViewExport(RegionName = RegionNames.MainRegion)]
[PartCreationPolicy(CreationPolicy.NonShared)]
public partial class PositionSummaryView : UserControl
{
public PositionSummaryView()
{
InitializeComponent();
}
#region IPositionSummaryView Members
[Import]
public IPositionSummaryViewModel Model
{
get
{
return DataContext as IPositionSummaryViewModel;
}
set
{
DataContext = value;
}
}
#endregion
}
У меня следующие вопросы:
- Как создается экземпляр View без атрибута [Importing Constructor] длякласс, как показано в предыдущем примере?
- Что вызывает присвоение свойства DataContext?Как значение передается в свойство ViewModel?Играя с модифицированной версией StockTrader, я создал новый вид.если поместить точку останова рядом со строкой DataContext = значение, точка останова никогда не будет достигнута.