Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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
C# Visual Studio没有可用的源代码_C#_Wpf_Visual Studio 2010 - Fatal编程技术网

C# Visual Studio没有可用的源代码

C# Visual Studio没有可用的源代码,c#,wpf,visual-studio-2010,C#,Wpf,Visual Studio 2010,我在这里真是不知所措,几个小时来一直在努力寻找解决办法。我迷路了。我在上次检查时正在运行的操作中遇到以下异常 “{DependencyProperty.UnsetValue}”不是属性“前台”的有效值。 它不会把我带到错误发生的地方。它把我带到一个页面,上面写着“没有可用的资源”,没有其他内容。我曾尝试通过在不同的位置放置断点来定位错误,但在每次运行期间,它似乎在不同的位置失败。InnerException为空 我看过,还有谷歌的各种文章。我不知道发生了什么,也不知道如何从这里排除故障。Visu

我在这里真是不知所措,几个小时来一直在努力寻找解决办法。我迷路了。我在上次检查时正在运行的操作中遇到以下异常

“{DependencyProperty.UnsetValue}”不是属性“前台”的有效值。

它不会把我带到错误发生的地方。它把我带到一个页面,上面写着“没有可用的资源”,没有其他内容。我曾尝试通过在不同的位置放置断点来定位错误,但在每次运行期间,它似乎在不同的位置失败。InnerException为空


我看过,还有谷歌的各种文章。我不知道发生了什么,也不知道如何从这里排除故障。VisualStudio输出似乎没有提供任何更详细的信息,但我会根据请求粘贴它。非常感谢您的帮助。

您重建项目了吗?您的PDB文件可能与DLL不匹配,因此VS可能没有加载它们。至于错误本身,很可能是绑定到
前台
属性的错误。

我愿意为您提供缺少的资源。如果您执行以下操作:

<Window x:Name="window" x:Class="WpfApplication4.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:sys="clr-namespace:System;assembly=mscorlib"
        xmlns:local="clr-namespace:WpfApplication4"
        Title="MainWindow" Height="350" Width="525" >
    <Window.Resources>
    <Style TargetType="Button">
        <Setter Property="Foreground" Value="{StaticResource NoSuchResourceKey}" />
    </Style>
    </Window.Resources>
    <StackPanel>
        <Button Content="Click Me" />
    </StackPanel>
</Window>
相反,如果我们做了:

<Button Content="Click Me" Foreground="{StaticResource {ComponentResourceKey TypeInTargetAssembly={x:Type FrameworkElement}, ResourceId=NoSuchResourceKey}}" />

然后,您将得到一个不同的异常(XamlParseException),表示:

在“System.Windows.StaticResourceExtension”上提供值时引发异常。“行号“6”和行位置“22”

内部例外情况如下:

找不到名为“TargetType=System.Windows.FrameworkElement ID=NoSuchResourceKey”的资源。资源名称区分大小写

这一切都将我们引向了真正的问题(缺少的资源)。前两个示例没有给出有用的异常的原因是我们没有设置
前台
属性。我们正在设置
Setter
对象上的
Value
属性。因此,当找不到资源时,将使用
dependencProperty.UnsetValue
。这对于
Setter.Value
属性完全有效

稍后,当
样式
应用于
按钮
时,我们会得到一个异常,因为此时
dependencProperty.UnsetValue
实际上被分配给
按钮.前台
属性

为了解决这个问题,我将在您的整个解决方案中搜索
Property=“Foreground”
,并查找使用不存在的资源的任何实例


我应该补充一点,在使用
DynamicResource
时不会出现异常,因为在传递给
按钮的值中,前台
属性是一个“特殊值”(允许延迟查找)。除非找到资源,否则此“特殊值”不会分配给定的属性。

该问题最终成为我使用的资源字典中的错误引用。这是使用DynamicSource的一个好理由吗?静态和动态之间有性能差异吗?@Tyrsius-不,这不是使用DynamicSource的好理由。与StaticResource相比,使用it会带来额外的开销。“特殊值”将被保留,并且可以在运行时重新查询关联的资源。真的,在这种情况下只需要更好的错误报告。@Code裸体+1非常详细的解释。如果尝试将画笔指定给颜色,也会出现此类错误报告。
<Button Content="Click Me" Foreground="{StaticResource NoSuchResourceKey}" />
<Button Content="Click Me" Foreground="{StaticResource {ComponentResourceKey TypeInTargetAssembly={x:Type FrameworkElement}, ResourceId=NoSuchResourceKey}}" />