Смесь 3 во время разработки не может найти мои конвертеры / ресурсы.(WPF)

У меня проблемы с использованием Blend с моим визуальным студийным решением.

В Runtime и во время компиляции все просто отлично.

Как вы можете видеть на картинке, Blend призывает меня создать проект, но он не меняет ситуацию, даже после успешной сборки, перестройки, очистки и сборки, он все тот же, пользовательский интерфейс заблокирован от дизайнера.

Есть идеи?

http://i29.tinypic.com/rjdpxk.jpg

РЕДАКТИРОВАТЬ: опечатки исправлены, проблема сохраняется.

Код конвертера:

namespace BlendTest
{
    public class TestConvert : IValueConverter
    {
        #region IValueConverter Members

        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return ((bool)value) ? Visibility.Visible : Visibility.Collapsed;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }

        #endregion
    }  
}      



<Window
  x:Class="XP2Win7.UserInterface.ImageViewer.MainView.MainWindow"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:local="clr-namespace:BlendTest"
  WindowState="Maximized"
  WindowStartupLocation="CenterScreen"
  Background="Transparent"
  Title="Test">
    <Window.Resources>
        <local:TestConvert x:Key="TestConvert"/>
    </Window.Resources>
    <Grid x:Name="RootLayout" >
        <TextBlock Text="Hello" Visibility="{Binding IsMargol, Converter={StaticResource TestConvert}}" FontSize="48" FontWeight="Bold" />
    </Grid>
</Window>

Спасибо ариэль

4 ответа

Решение

Ну, а пока причина проблемы мне пока неизвестна.

Решение проблемы было следующим:

  1. Я создал новый проект Code Library и перенес туда все свои элементы управления и конвертеры.

  2. Я использовал атрибут XmlnsDefinition для украшения сборки, чтобы каждый соответствовал одному и тому же пространству имен.

  3. исправление всех ссылок.

и вуаля.

Ariel

Что сработало для меня?

Изменение пути вывода сборки с bin/x86/Debug на bin/Debug сработало для меня. Но все равно не имело никакого смысла, так как мой Platform Target был установлен на "x86". Поэтому я решил подробнее остановиться на этой проблеме и обнаружил, что выбор платформы в раскрывающемся списке "x86" не отражает "Значение", установленное в файле конфигурации проекта.

Я выгрузил проект в VS, открыл файл.csproj в редакторе, чтобы увидеть значение для "Платформа". К моему удивлению, для него установлено значение "Любой процессор", а в раскрывающемся списке параметров сборки отображается "x86". Все, что я сделал, это вручную отредактировал файл.csproj, прочитав "x86".

Вот шаги для решения:

  • Щелкните правой кнопкой мыши на проекте VS
  • разгружать
  • Щелкните правой кнопкой мыши и отредактируйте файл.csproj
  • Убедитесь, что "Платформа" установлена ​​на правильную

Похоже, у вас есть опечатки в вашем XAML:

Alubm вместо Album а также BlentTest вместо BlendTest

Я предполагаю, что ошибки на самом деле являются истинными ошибками компилятора, и исправление двух приведенных выше опечаток, скорее всего, "исправит" конструктор.


Редактировать:

Наиболее вероятный кандидат, который я вижу, это то, что ваш конвертер находится в отдельном проекте от вашего файла XAML (но в том же решении). Если это так, убедитесь, что указали сборку в объявлении XAML, и убедитесь, что на другой проект (с BlendTest) ссылаются правильно. то есть:

xmlns:local="clr-namespace:BlendTest;assembly:BlendTest"

Если вы ссылаетесь на тип (с пространством имен), определенный в другом проекте, ссылка на сборку также должна существовать.

Этот ответ исправил это для меня: я сбросил "Цель платформы" на "Любой процессор".

Другие вопросы по тегам