Я не уверен, что лучший способ добиться этого.Вот мой взгляд:
public partial class MyPage : Page
{
[Import]
public MyVM ViewModel
{
get { return DataContext as MyVM ; }
set { DataContext = value; }
}
public String EventName { get; set; }
public MyPage()
{
InitializeComponent();
CompositionInitializer.SatisfyImports(this);
}
// Executes when the user navigates to this page.
protected override void OnNavigatedTo(NavigationEventArgs e)
{ }
}
И моя виртуальная машина:
[Export]
public class MyVM : ViewModelBase
{
public MyVM ()
{
}
}
Это прекрасно работает.Однако мне нужно получить данные либо из модели представления, в которой есть моя строка, либо из URL.В любом случае, я не уверен, что лучший способ передать строку в MyVW с помощью MEF.Я подумал, хорошо, что я буду использовать Messaging из MVVMLight, но класс MyVM еще не создан для получения трансляции из другой ViewModel.Тогда я хорошо подумал, я попробую это:
[Export]
public class MyVM : ViewModelBase
{
public MyVM ([Import("hello")]string hello)
{
}
}
, а затем выведу это на экран:
[Export("hello")]
public String MyHello { get; set; }
но это дало мне ошибку.Невозможно вызвать SatisfyImports для объекта типа «Форма A», поскольку он помечен одним или несколькими объектами ExportAttributes.
Итак, как лучше всего это сделать?