Смесь 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 ответа
Ну, а пока причина проблемы мне пока неизвестна.
Решение проблемы было следующим:
Я создал новый проект Code Library и перенес туда все свои элементы управления и конвертеры.
Я использовал атрибут XmlnsDefinition для украшения сборки, чтобы каждый соответствовал одному и тому же пространству имен.
исправление всех ссылок.
и вуаля.
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"
Если вы ссылаетесь на тип (с пространством имен), определенный в другом проекте, ссылка на сборку также должна существовать.
Этот ответ исправил это для меня: я сбросил "Цель платформы" на "Любой процессор".