2015-07-13 2 views
2

Мое приложение работает нормально, ошибка в визуальной студии просто сводит меня с ума. Фактическая ошибка:Ошибка дизайна пользовательского контроля WPF

Не удалось найти часть пути 'C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ emailTemplates'.

Моя программа запускается и заполняет поле со всеми файлами .msg в каталоге относительно приложения. как я уже сказал, он компилируется и работает нормально. Я попытался восстановить, очистить и т. Д. Ничего не работает. чистка, кажется, исправляет его, пока я не построю его снова. Что происходит??

enter image description here

Главное окно:

<Window x:Class="abfsEmailGenerator.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:custom ="clr-namespace:abfsEmailGenerator" 
    Title="MainWindow" Height="700" Width="600"> 
<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="Auto"/> 
    </Grid.RowDefinitions> 
    <Expander x:Name="emailSelectExpander" Header="Select Email" HorizontalAlignment="Right" Width="592"> 
     <custom:HtmlViewer></custom:HtmlViewer> 
    </Expander> 

</Grid> 
</Window> 

HtmlViewer:

<UserControl x:Class="abfsEmailGenerator.HtmlViewer" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     mc:Ignorable="d" 
     d:DesignHeight="600" d:DesignWidth="600"> 
<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="Auto"/> 

    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto"/> 
     <ColumnDefinition Width="28*"/> 
     <ColumnDefinition Width="243*"/> 
    </Grid.ColumnDefinitions> 

    <Label Margin="3" Grid.Row="0">CC:</Label> 
    <TextBox x:Name="ccText" Margin="3" Grid.Column="1" Grid.Row="0" Grid.ColumnSpan="2" /> 
    <Label Margin="3" Grid.Row="1">Subject:</Label> 
    <TextBox x:Name="subjectText" Margin="3" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="2"/> 
    <WebBrowser Margin="3,3,3,33" x:Name="bodyBrowser" Grid.Row="2" Grid.ColumnSpan="3" VerticalAlignment="Stretch" Height="500" Grid.RowSpan="2"></WebBrowser> 
    <ComboBox x:Name="emailSelector" Grid.Row="3" Grid.Column="0" Margin="3" Grid.ColumnSpan="3" DropDownClosed="emailSelector_DropDownClosed"/> 
</Grid> 

HtmlViewer Код:

namespace abfsEmailGenerator 
{ 
/// <summary> 
/// Interaction logic for HtmlViewer.xaml 
/// </summary> 
public partial class HtmlViewer : UserControl 
{ 
    outlook.Application oApp = new outlook.Application();  
    private Dictionary<string, Dictionary<string, dynamic>> emailDict = new Dictionary<string, Dictionary<string, dynamic>>(); 

    public HtmlViewer() 
    { 

     InitializeComponent(); 
     populateCb(); 



    } 


    private void populateCb() 
    { 
     string emailFolder = AppDomain.CurrentDomain.BaseDirectory + "/emailTemplates"; 
     emailDict.Clear(); 
     emailSelector.ItemsSource = null; 
     foreach (var file in Directory.EnumerateFiles(emailFolder, "*.msg", SearchOption.AllDirectories)) 
     { 
      ... 
     } 
    } 
} 
+0

У вас полностью прекрасная визуальная студия, и проблема повторится? я получаю «фантомные» ошибки все время, которые не уходят, пока все экземпляры визуальной студии не закрыты ... –

+0

Да, я пробовал это. Обычно это работает, но не в этот раз. –

ответ

2

Невозможно создать экземпляр «HTMLViewer».

Это предполагает, что инициатором может быть преступник.

В режиме разработки вы не хотите, чтобы элемент управления пытался выполнять работу, отличную от настройки основного вида и контроля.

Чтобы сохранить операционную деятельность до минимума, что может создать нулевые сбои экземпляра, все возможное, чтобы отделить код, который имеет высокую вероятность отказа как такового:

public HtmlViewer() 
{ 
    InitializeComponent(); 

    if (!DesignerProperties.GetIsInDesignMode(this)) // If NOT in design mode...do work. 
     populateCb(); 
} 

В зависимости от того, как свойства зависимостей могут быть сконфигурированы, они могут неправильно обрабатывать нуль и вызывать проблемы; если да, то может потребоваться приведенный выше код.

+0

, когда я пытаюсь использовать 'System.ComponentModel.DesignerProperties.IsInDesignModeProperty' редактор выдает ошибку, говоря, что '!' оператор не может быть применен к операнду типа «System.Windows.DependencyProperty». Имею ли я доступ к неправильному свойству? –

+0

@MichaelBillingham обновлен, извините за неправильный звонок. См. Обновление – OmegaMan

+0

Это сработало! Благодаря! –