Я использую mvvm light toolkit, и я не знаю, где разместить публичную команду для загрузки данных. я новичок в mvvm, и я хотел бы знать, куда это идет, куда, как следует.
Пробовал изучать фреймворк mvvm, у некоторых есть структура папок для доступа к данным. сейчас я попытался получить доступ к текстовому представлению представления, которое привязано к модели представления, которая имеет свойство для данных
вот код, где я пытаюсь получить доступ к контексту данных
Case "tabShutout"
Dim tempDatagrid As System.Windows.Controls.DataGrid = DirectCast(ctlShutout.Controls("dgShutout"), System.Windows.Controls.DataGrid)
DirectCast(tempDatagrid.DataContext, Vessel_Movement_Report_Creator_User_Controls.ViewModel.MainViewModel).LoadShutout(clsVMR.ShutoutContainers)
вот мой взгляд модель
public class MainViewModel : ViewModelBase
{
/// <summary>
/// Initializes a new instance of the MainViewModel class.
/// </summary>
///
private ObservableCollection<Model.Shutout_Container> _shutoutContainers;
private Model.Shutout_Container _selectedContainer;
public MainViewModel()
{
////if (IsInDesignMode)
////{
//// // Code runs in Blend --> create design time data.
////}
////else
////{
//// // Code runs "for real"
////}
}
public ObservableCollection<Model.Shutout_Container> ShutoutContainers => _shutoutContainers;
public Model.Shutout_Container SelectedContainer
{
get
{
return _selectedContainer;
}
set
{
_selectedContainer = value;
RaisePropertyChanged("SelectedContainer");
}
}
public void LoadShutout(ObservableCollection<Model.Shutout_Container> ShutoutContainers)
{
this._shutoutContainers = ShutoutContainers;
this.RaisePropertyChanged(() => this.ShutoutContainers);
Messenger.Default.Send<NotificationMessage>(new NotificationMessage("Shutout Loaded"));
}
}
Я ожидаю, что при нажатии на вкладку данные должны быть загружены в элемент управления wpf и соответствующим образом скорректированы, так как элемент управления wpf знает, что его данные были изменены.