Передать MainViewModel в MainView с различными UcerControl WPF MVVM

205
19 ноября 2017, 13:05

Добрый день. Реализовываю плагин под AutoCAD с запуском из программы, в результате чего использую библиотеку UcerControl'ов ну то есть просто в ней создал MainView в DataContext присваиваю MainViewModel, при компиляции получаю .dll которую загружаю в AutoCAD. Но не могу понять почему в DataContext не передается экземпляр MainViewModel

таким образом запускается плагин

using Autodesk.AutoCAD.Runtime;
using Plagin_AutoCad.View;
using autoDSK = Autodesk.AutoCAD.ApplicationServices.Application;
public class StartGUI
{
    [CommandMethod("startplagin")]
    public static void StartPlagin()
    {
        MainView mainView = new MainView();
        autoDSK.ShowModelessWindow(mainView);
        mainView.DataContext = new ViewModel.MainViewModel();            
    }
}

Но события в MainViewModel не срабатываю, тот же банальный биндинг

public class MainViewModel:INotifyPropertyChanged
    {
        #region PropertyChangedEventHandler
        /// <summary>
        /// Метод проверяющий изменилось ли свойство
        /// </summary>
        public event PropertyChangedEventHandler PropertyChanged;
        protected virtual void OnPropertyChanged(string propertyName)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
        #endregion

        private ShowLayersViewModel _showLayers;
        private ColorPickerViewModel _colorPicker;
        private string _visibleColorPicker;
        public MainViewModel()
        {
            ColorPicker = new ColorPickerViewModel();
            ShowLayers = new ShowLayersViewModel();
            //ColorPicker.VisibleColorPicker = "Collapsed";
            VisibleColorPicker = "Collapsed";
            ClickCommandVisible = new Command(arg =>
            {
                VisibleColorPicker = "Collapsed";
            });
        }
        public ShowLayersViewModel ShowLayers
        {
            get { return _showLayers; }
            set { _showLayers = value;  OnPropertyChanged("ShowLayers");}
        }
        public ColorPickerViewModel ColorPicker
        {
            get { return _colorPicker; }
            set { _colorPicker = value; OnPropertyChanged("ColorPicker"); }
        }
        public string VisibleColorPicker
        {
            get { return _visibleColorPicker; }
            set { _visibleColorPicker = value; OnPropertyChanged("VisibleColorPicker"); }
        }

        public ICommand ClickCommandVisible { get; set; }
    }

тут я пытаюсь изменить видимость UcerControla ColorPicker

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="25" />
        <RowDefinition Height="150" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>
    <Button Grid.Row="0" Command="{Binding ClickCommandVisible}" />
    <userControls:ShowLayers Grid.Row="1" DataContext="{Binding ShowLayers}" />
    <userControls:ColorPicker
        Grid.Row="2"
        DataContext="{Binding ColorPicker}"
        Visibility="{Binding VisibleColorPicker}" />
</Grid>

Кстати Application класс нет. Как можно решить данную проблему?

READ ALSO
Клиент-сервер SSL на C#

Клиент-сервер SSL на C#

Дали в универе такое задание:

245
Не выводит колодки

Не выводит колодки

Не выводит две последние колодки, выводит только название и лого, а часы не выводит

212
Повтороная работа скрипта

Повтороная работа скрипта

У меня есть 5 блоков с ссылкамиПри нажатии на ссылку, должна появляться менюха в модальном окне

244