Ответы пользователя по тегу .NET
  • Как передать значение из одного ViewModel в другой?

    @SitrixEug
    Основная суть MVVM - ViewModel ничего не знает об интерфейсе(View). View же о ViewModel знает. Поэтому создавать конкретную View в обработчике комманды конечно неправильно.
    Но view можно связать с ViewModel в xaml коде, который уже является частью интерфейса, примерно так:
    <DataTemplate DataType="{x:Type vm:TrollViewModel}">
        <v:TrollView />
      </DataTemplate>


    А в обработчике комманды лишь создавать ViewModel. Примерно так:
    protected void ShowWorkspace<T>() where T : WorkspaceViewModel, new()
            {
                WorkspaceViewModel workspace = this.Workspaces.FirstOrDefault(vm => vm is T) as T;
    
                if (workspace == null)
                {
                    workspace = new T();
                    this.Workspaces.Add(workspace);
                }
    
                this.SetActiveWorkspace(workspace);
            }
    
            protected void SetActiveWorkspace(WorkspaceViewModel workspace)
            {
                Debug.Assert(this.Workspaces.Contains(workspace));
    
                ICollectionView collectionView = CollectionViewSource.GetDefaultView(this.Workspaces);
                if (collectionView != null)
                    collectionView.MoveCurrentTo(workspace);
            }


    Подробнее об этом решении в статье автора

    Строчку же можно передать в виде обьекта. ListView у тебя забинжена к какой-то коллекции Collection. Этот самый SomeObject передать в качестве параметра во ViewModel. Главное что-бы он наследовал интерфейс INotifyPropertyChanged.
    Ответ написан
    Комментировать