Spoon Of Doom Ответов: 3

WPF: XAML Designer не распознает типы, но компиляция работает нормально


Привет,

У меня есть небольшая проблема с использованием нестандартного пользовательского элемента управления в моем существующем проекте WPF, не критичная, но очень раздражающая. Я пытаюсь использовать WPF NotifyIcon[^] Филиппом Суми в моем проекте WPF. Я добавил ссылку, добавил пространство имен в XAML и C#, но дизайнер не распознает этот тип. Однако если я компилирую или отлаживаю, то все работает нормально, и я могу использовать элемент управления именно так, как он был задуман.

Это оставляет мне рабочий элемент управления, который просто трудно использовать, так как я не могу воспользоваться преимуществами IntelliSense в коде XAML. Как ни странно, он даже не распознает мой локальный тип и выдает мне то же сообщение об ошибке о не найденном типе и отсутствующей сборке, что и тот, который я получаю с помощью TaskbarIcon.

Я попытался сделать те же шаги в новом проекте, не делая ничего другого раньше, и это сработало, поэтому я озадачен, почему он ведет себя по-разному в двух разных проектах (оба нацелены на .NET 3.5, если это важно). Может быть, кто-нибудь подскажет мне, как это сделать? У меня есть using Hardcodet.Wpf.TaskbarNotification; в моем C#, и вот как выглядит мой XAML. Если вам нужно что-то еще, чтобы увидеть, что происходит, пожалуйста, спросите.

<<Window x:Class="ASM_Informer.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:tb="http://www.hardcodet.net/taskbar"
        xmlns:local="clr-namespace:ASM_Informer.UI"
        Title="MainWindow" Height="Auto" Width="Auto">
    <Grid>
        <tb:TaskbarIcon x:Name="tb" ToolTipText="hello world">
            <tb:TaskbarIcon.TrayPopup>
                <local:DispoRMUC/>
            </tb:TaskbarIcon.TrayPopup>
        </tb:TaskbarIcon>
    </Grid>
</Window>



TaskbarIcon и DispoRMUC (мой собственный пользовательский элемент управления, который находится в пространстве имен пользовательского интерфейса) - это типы, которые дизайнер, по-видимому, не может найти и которые показывают сообщение об ошибке.
Я использую немецкую версию Visual Studio 2010 (Professional), поэтому у меня есть только немецкое сообщение об ошибке ("Fehler - Der tb:TaskbarIcon-Typ wurde nicht gefunden. Alle Assemblyverweise müssen vorhanden sein, und alle Assemblys, auf die verwiesen wird, müssen erstellt worden sein."), поэтому я примерно переведу: "ошибка - tb:TaskbarIcon-type не найден. Все ссылки на сборки должны существовать, и все ссылки на сборки должны быть построены.".

Заранее большое спасибо всем, кто найдет время разобраться в этом вопросе. Я надеюсь, что кто-нибудь сможет мне в этом помочь.

Sergey Alexandrovich Kryukov

Вы говорите, что все компилируется и работает правильно, но дизайнер сейчас не показывает? Такое случается.
Вы пытались очистить и восстановить все с нуля?
--СА

Spoon Of Doom

Да, именно так. Как я уже говорил, это скорее досада, чем критическая ошибка, но все же это так.. ну, раздражает :)

Я убирал и перестраивал, к сожалению, это не имело значения. Но все равно спасибо за совет!

Edit: просто чтобы уточнить, мало того, что дизайнер не показывает его, редактор XAML также помечает тип "TaskbarIcon" ошибкой, говоря, что он не может быть найден.

Sergey Alexandrovich Kryukov

Хм... трудно сказать без полного проекта, показывающего состояние... Честно говоря, я научился минимизировать XAML (только словарь, макет и привязка, никогда события - автогенерация обработчиков событий-это зло), поэтому я не создаю блокираторы такого рода. Кроме того, вы используете контроль версий? Должно быть, даже для самых маленьких проектов вы всегда можете проследить свои шаги...
--СА

Spoon Of Doom

Да, все это находится на сервере Team Foundation Server. Но даже с этим я еще не смог точно выяснить, что вызывает проблему, тем более что даже локальное пространство имен создает те же проблемы. Есть ли что-то конкретное, что вам нужно увидеть? Я не хочу спамить это место, публикуя весь свой проект.
В любом случае, я буду следить и публиковать здесь, Если узнаю, что вызывает это, но сейчас я думаю, что просто уберу этот материал из XAML, как вы предложили, чтобы меня не спамили ложными ошибками все время. У меня есть крайний срок, и я, вероятно, уже потратил слишком много времени на отслеживание этой проблемы, чем следовало бы. Спасибо за вашу помощь!

3 Ответов

Рейтинг:
21

Venkatesh Mookkan

Конструктор WPF в Visual Studio-это базовый конструктор. Но в Visual Studio 2010 есть лучший конструктор WPF. Рендеринг времени разработки зависит от элементов управления и сложного дизайна, используемых в этом конкретном окне или UserControl.

Например:
Если у вас есть элемент управления, который загружает записи из БД при инициализации, то дизайнер не сможет показать дизайн, потому что if не будет подключаться к БД, если вы не запустите приложение.

Но в вашем случае проблема заключается в элементе управления TaskbarIcon. Если у вас есть исходный код, попробуйте добавить проект в качестве ссылки и посмотреть.


Spoon Of Doom

Большое спасибо за совет. Я попытался добавить проект, но результат был точно таким же. Еще какие-нибудь намеки?

Venkatesh Mookkan

Тогда вам нужно использовать лучшего дизайнера. Expression Blend 2.0 или выше лучше, чем Visual Studio.

Рейтинг:
2

Wouter Vos

Это еще не решено! Я постоянно сталкиваюсь с подобными проблемами, даже ссылки и пространства имен, которые действительно работают, внезапно перестают работать. Иногда intellisense видит мой класс в пространстве имен, но пространство имен не распознается!

Это действительно нужно исправить.
Я был бы рад внести кардинальные изменения в форматирование, если это необходимо.


Glenn Rockland

Это все еще происходит сегодня - DateTime.Now

Schuttrim

Произошло сегодня внутри установщика стиля: "ошибка инициализации типа 'type': инициализатор типа для 'qualified.type.name-сделал исключение."

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

Visual Studio 2015 Обновление 3

Рейтинг:
2

Member 14741882

Привет У нас была такая же проблема с компонентом TaskbarIcon. Мы справились с этим, переустановив пакет Hardcodet.Уведомь меня об этом.Wpf в Visual Studio.

Инструменты >> менеджер пакетов NuGet >> Управление пакетами NuGet для решения...