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

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

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

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

Есть идеи?

alt text

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

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

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>

Спасибо Ariel

Ответы [ 4 ]

0 голосов
/ 07 февраля 2013

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

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

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

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

  • Щелкните правой кнопкой мыши на проекте VS
  • Выгрузка
  • Щелкните правой кнопкой мыши и отредактируйте файл .csproj
  • Убедитесь, что «Платформа» установлена ​​на правильное значение
0 голосов
/ 03 сентября 2009

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

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

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

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

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

и Вуаля.

Ariel

0 голосов
/ 16 декабря 2011

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

0 голосов
/ 01 сентября 2009

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

Alubm вместо Album и BlentTest вместо BlendTest

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


Edit:

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

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

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

...