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, как вы предложили, чтобы меня не спамили ложными ошибками все время. У меня есть крайний срок, и я, вероятно, уже потратил слишком много времени на отслеживание этой проблемы, чем следовало бы. Спасибо за вашу помощь!