public PerspexEditorMargin(IWpfTextView textView)
        {
            _textView = textView;

            _targetExe = textView.GetContainingProject()?.GetAssemblyPath();
            if (_targetExe == null)
            {
                Height = 0;
                return;
            }
            _designer = new PerspexDesigner() {TargetExe = _targetExe };
            InitializeComponent();
            DesignerContainer.Content = _designer;
            Height = 200;
            _designer.Xaml = textView.TextBuffer.CurrentSnapshot.GetText();
            PerspexBuildEvents.Instance.BuildEnd += Restart;
            PerspexBuildEvents.Instance.ModeChanged += OnModeChanged;
            textView.TextBuffer.PostChanged += delegate
            {
                _designer.Xaml = textView.TextBuffer.CurrentSnapshot.GetText();
            };
            ReloadMetadata();
        }
        private void InitializeDesigner()
        {
            _targetExe = GetContainerProject(_fileName).GetAssemblyPath();
            if (_targetExe == null)
            {
                var block = new TextBlock
                {
                    VerticalAlignment = VerticalAlignment.Center,
                    HorizontalAlignment = HorizontalAlignment.Center,
                    Text = $"{Path.GetFileName(_fileName)} cannot be edited in the Design view."
                };
                _designerHost.DesignView.Content = block;
                return;
            }

            _designer = new PerspexDesigner { TargetExe = _targetExe };
            _designerHost.DesignView.Content = _designer;

            _designer.Xaml = _textBuffer.CurrentSnapshot.GetText();
            PerspexBuildEvents.Instance.BuildEnd += Restart;
            PerspexBuildEvents.Instance.ModeChanged += OnModeChanged;
            _textBuffer.PostChanged += OnTextBufferPostChanged;
            ReloadMetadata();
        }