Доступ к ViewModel из wpf dll

1

У меня есть wpf MultiROIStats.dll с режимом, представлением, ViewModel. Вот С# вида:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace MultiROIStats
{

    using ViewModel;

    //xmlns:dg="clr-namespace:Microsoft.Windows.Controls;assembly=WpfToolkit"
    /// <summary>
    /// Interaction logic for MultiROIStats.xaml
    /// </summary>
    public partial class MultiROIStats : Window
    {
        public MultiROIStats()
        {          
            InitializeComponent();
            DataContext = new MultiROIStatsViewModel();
        }
    }
}

Чтобы использовать эту MultiROIStats,dll, я вставляю в нее информацию о другом проекте. Теперь мне нужно получить доступ к ViewModel (некоторые методы там) вставленного MultiROIStats.dll. Мне интересно, как мне это сделать? Я инициировал объект вставленной MultiROIStats.dll, но не могу найти метод, который я хочу использовать в его ViewModel:

 private void btnSave_Click(object sender, RoutedEventArgs e)
        {
            MultiROIStats mroi = new MultiROIStats();

            mroi.Show();   

           // here should be mroi.viewmode.dothings() ... but I don't know how to access it

        }
Теги:
dll
wpf
mvvm

2 ответа

1
Лучший ответ

Вы должны быть в состоянии добраться до него, отбросив DataContext до типа модели вида:

MultiROIStats mroi = new MultiROIStats();
mroi.Show();   

var viewmodel = mroi.DataContext as MultiROIStatsViewModel;
if (viewmodel != null)
    viewmodel.dothings();
  • 0
    он говорит, что MultiROIStatsViewModel не может быть найден.
1
var window = new MultiROIStats();
window.Show();   

var vm = window.DataConntext as MultiROIStatsViewModel;
vm.DoThings();
  • 0
    Он говорит, что MultiROIStatsViewModel не может быть найден.
  • 0
    @ Нет, вам нужна ссылка на сборку, которая содержит класс viewmodel и директиву using для соответствующего пространства имен.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню