Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在设计时混合3罐';找不到我的转换器/资源。(WPF)_Wpf_Expression Blend_Blend_Expression Blend 3 - Fatal编程技术网

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

在设计时混合3罐';找不到我的转换器/资源。(WPF),wpf,expression-blend,blend,expression-blend-3,Wpf,Expression Blend,Blend,Expression Blend 3,我在visual studio解决方案中使用Blend时遇到问题 在运行时和编译时,一切都很好 正如您在图中所看到的,Blend敦促我构建项目,但它并没有改变这种情况,即使在成功构建、重建、清理和构建之后,它仍然是一样的,UI从设计器中被阻止 有什么想法吗 编辑:拼写错误已修复,问题仍然存在 转换器代码: namespace BlendTest { public class TestConvert : IValueConverter { #region IVa

我在visual studio解决方案中使用Blend时遇到问题

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

正如您在图中所看到的,Blend敦促我构建项目,但它并没有改变这种情况,即使在成功构建、重建、清理和构建之后,它仍然是一样的,UI从设计器中被阻止

有什么想法吗

编辑:拼写错误已修复,问题仍然存在

转换器代码:

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>
名称空间混合测试
{
公共类TestConvert:IValueConverter
{
#区域转换器成员
公共对象转换(对象值、类型targetType、对象参数、System.Globalization.CultureInfo区域性)
{
返回((bool)值)?可见性。可见:可见性。折叠;
}
公共对象转换回(对象值、类型targetType、对象参数、System.Globalization.CultureInfo区域性)
{
抛出新的NotImplementedException();
}
#端区
}  
}      
谢谢
Ariel

看起来您的XAML中有打字错误:

Alubm
代替
Album
BlendTest
代替
BlendTest

我猜这些错误实际上是真正的编译器错误,纠正上面的两个错误很可能会“修复”设计者


编辑:

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

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

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

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

解决混乱的办法如下:

  • 我创建了一个新的代码库项目,并将我所有的控件和转换器都搬到了那里

  • 我使用XmlnsDefinition属性来修饰程序集,使每个程序集都对应于相同的名称空间

  • 修复所有引用

  • Ariel为我修复了它:我将“平台目标”重置为“任何CPU”。

    什么对我有效

    将生成输出路径从bin/x86/Debug更改为bin/Debug对我来说很有效。但仍然没有任何意义,因为我的平台目标设置为“x86”。因此,我决定更多地讨论这个问题,并发现下拉列表“x86”中的平台选择没有反映项目配置文件中设置的“值”

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

    以下是解决问题的步骤:

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

    不,打字错误一致,足以编译:)未成功编译。它在窗口底部显示XAML文件中的实际编译错误。这是问题的一部分。visualstdio编译它没有问题,混合编译它没有问题(输出窗口指示“构建已成功完成”)。您的转换器(在那里被引用)是在公共可见性下创建的吗?如果它们是私有的,则可能会导致设计器中出现问题。您是否可以编辑问题以包括XAML、名称空间部分和出错的行?如果没有这些,就无法进一步调试。您可以添加XAML声明、名称空间和使用此转换器的任何控件吗?当然可以。完成。拆下另一个转换器,以便更容易操作。关于TestConvert的问题仍然存在,我用我的最佳猜测编辑了我的答案。根据您提供的内容,一切都应该正常工作(在我的测试解决方案中也是如此)。您是否可以创建一个测试项目,使用与问题中完全相同的窗口,并确认它确实会使MS Expression Blend 3 designer崩溃?你能分享错误屏幕吗?当前的截图看起来不像是从这段代码中截取的。。。也许是我们看不见的最重要的部分?@anvaka,我知道,我在那件事上浪费了很多时间。我之所以选择TestConvert,首先是因为我从一段工作代码开始,并试图将其集成到现有的大型解决方案(31个项目)中,看看它何时开始失败。