设计时混合3找不到我的转换器/资源。(WPF)

时间:2009-09-01 17:37:50

标签: wpf expression-blend blend expression-blend-3

我在使用Blend和我的visual studio解决方案时遇到了麻烦。

在运行时和编译时,一切都很好。

正如你在图片中看到的那样,Blend敦促我去构建项目,但它并没有改变这种情况,即使在成功构建,重建,清理&构建,它仍然是相同的,UI被设计者阻止

有什么想法吗?

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>

由于 爱丽儿

4 个答案:

答案 0 :(得分:0)

看起来你的XAML中有拼写错误:

Alubm代替AlbumBlentTest代替BlendTest

我猜错误实际上是真正的编译错误,纠正上面的两个拼写错误很可能“修复”设计师。


编辑:

我看到的最有可能的候选者是您的转换器与XAML文件位于一个单独的项目中(但在同一解决方案中)。如果是这种情况,请确保在XAML声明中指定程序集,并确保正确引用其他项目(使用BlendTest)。即:

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

如果您引用在不同项目中定义的类型(带名称空间),则程序集引用也需要存在。

答案 1 :(得分:0)

好吧,虽然我仍然不知道问题的原因。

解决问题的方法如下:

  1. 我已经创建了一个新的代码库项目,并将所有控件和转换器移动到那里。

  2. 我使用XmlnsDefinition属性来装饰程序集,因此每个都对应于相同的名称空间。

  3. 修复所有参考文献。

  4. 和Voilà。

    爱丽儿

答案 2 :(得分:0)

This answer为我修好了:我将'平台目标'重置为'任何CPU'。

答案 3 :(得分:0)

什么对我有用?

将构建输出路径从bin / x86 / Debug更改为bin / Debug对我有用。但由于我的平台目标被设置为'x86',所以仍然没有任何意义。所以我决定更多地讨论这个问题,发现下拉列表'x86'中的平台选择没有反映项目配置文件中设置的'Value'。

我在VS中卸载了Project,在编辑器中打开了.csproj文件以查看“Platform”的值是什么。令我惊讶的是,它被设置为'Any CPU',而构建选项下的下拉列表显示'x86'。我所做的就是手动编辑.csproj文件以读取'x86'。

以下是要解决的步骤:

  • 右键单击VS项目
  • 卸载
  • 右键单击并编辑.csproj文件
  • 确保'平台'设置为正确的