gpt4 book ai didi

c# - Visual Studio 无可用源

转载 作者:太空狗 更新时间:2023-10-30 00:44:25 25 4
gpt4 key购买 nike

我真的在这里不知所措,并且一直试图找到解决这个问题的几个小时。我迷路了。我在上次检查时正在运行的操作期间遇到以下异常。

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

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

我看过this question ,以及来自谷歌的各种文章。我无法弄清楚发生了什么,也不知道如何从这里进行故障排除。 Visual Studio 输出似乎没有提供任何更详细的信息,但我会根据要求粘贴它。请提供任何帮助。

最佳答案

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

<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>

然后你会得到这样的异常。我们甚至可以使用 ComponentResourceKey 来产生这个异常:

<Style TargetType="Button">
<Setter Property="Foreground" Value="{StaticResource {ComponentResourceKey TypeInTargetAssembly={x:Type FrameworkElement}, ResourceId=NoSuchResourceKey}}" />
</Style>

这里很少有事情会导致这个问题。通常,在使用 StaticResource 时,您会收到一个编译器错误,指出资源不存在。例如在这种情况下:

<Button Content="Click Me" Foreground="{StaticResource NoSuchResourceKey}" />

如果相反,我们做了:

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

然后你会得到一个不同的异常(XamlParseException),说:

Provide value on 'System.Windows.StaticResourceExtension' threw an exception.' Line number '6' and line position '22'.

有一个内部异常(exception):

Cannot find resource named 'TargetType=System.Windows.FrameworkElement ID=NoSuchResourceKey'. Resource names are case sensitive.

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

稍后,当 Style 应用于 Button 时,我们会得到异常,因为那是 DependencyProperty.UnsetValue 实际分配给的时候Button.Foreground 属性。

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

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

关于c# - Visual Studio 无可用源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7935530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com