Inheritance: INotifyPropertyChanged
		public DocumentView(Document doc)
		{
			InitializeComponent();

			Document = doc;
			Shell.Instance.Views[doc] = this;			

			uxTextEditor.SetHighlighting("XML");
			uxTextEditor.DataBindings.Add("Text", doc, "Text", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged);
			Document.Mode = DocumentMode.Design;
		}
		public DocumentView(Document doc)
		{
			InitializeComponent();

			Document = doc;
			Shell.Instance.Views[doc] = this;			

			//uxTextEditor.DataBindings.Add("Text", doc, "Text", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged);
			Document.Mode = DocumentMode.Design;
			Document.PropertyChanged += new PropertyChangedEventHandler(Document_PropertyChanged);
			uxTextEditor.TextChanged += new EventHandler(uxTextEditor_TextChanged);
		}
 DocumentContent CreateContentFor(Document doc)
 {
     var content = new DocumentContent() {
         DataContext = doc,
         Content = new DocumentView(doc)
     };
     content.SetBinding(DocumentContent.TitleProperty, "Title");
     return content;
 }
 public bool SaveAs(Document doc)
 {
     var initName = doc.FileName ?? doc.Name + ".xaml";
     var path = MainWindow.Instance.AskSaveFileName(initName);
     if (path != null)  {
         doc.SaveAs(path);
         return true;
     }
     return false;
 }
 public bool Save(Document doc)
 {
     if (doc.IsDirty) {
         if (doc.FilePath == null) {
             return SaveAs(doc);
         }
         doc.Save();
     }
     return true;
 }
        public void Open(string path)
        {
            path = Path.GetFullPath(path);

            if (RecentFiles.Contains(path)) {
                RecentFiles.Remove(path);
            }
            RecentFiles.Insert(0, path);

            foreach (var doc in Documents) {
                if (doc.FilePath == path) {
                    CurrentDocument = doc;
                    return;
                }
            }

            var newDoc = new Document(path);
            Documents.Add(newDoc);
            CurrentDocument = newDoc;
        }
 public void New()
 {
     Document doc = new Document("New" + nonameIndex++, File.ReadAllText("NewFileTemplate4.xaml"));
     Documents.Add(doc);
     CurrentDocument = doc;
 }
        public bool Close(Document doc)
        {
            if (doc.IsDirty) {
                var result = MessageBox.Show("Save \"" + doc.Name + "\" ?", Shell.ApplicationTitle,
                    MessageBoxButton.YesNoCancel, MessageBoxImage.Question);

                if (result == MessageBoxResult.Yes) {
                    if (!Save(doc)) return false;
                }
                else if (result == MessageBoxResult.Cancel) {
                    return false;
                }
            }
            Documents.Remove(doc);
            Views.Remove(doc);
            return true;
        }
 LayoutDocument CreateContentFor(Document doc)
 {
     var view = new DocumentView(doc);
     view.DataContext = doc;
     var content = new LayoutDocument()
     {
         Content = view
     };
     content.Title = doc.Title;
     return content;
 }