此项目中没有程序员编写的代码。
这是MainWindow.xaml代码:
autoUpdatingCode
这是App.xaml代码:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApplication1"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary Source="App.xaml" /> This is the offending line
</ResourceDictionary>
</Window.Resources>
<Grid>
<Button Style="{StaticResource algo}" />
</Grid>
答案 0 :(得分:1)
正如评论中所指出的,引用ResourceDictionary
的语法是
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="myresourcedictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
ResourceDictionary
的直接内容被视为字典的条目。这是丢失的Key
错误所指的位置。字典应该查找所有条目的键:
<Window.Resources>
<ResourceDictionary>
<conv:BoolToVisibilityConverter x:Key="BoolToVisibilityConverter" />
<conv:BoolToCollapsedConverter x:Key="BoolToCollapsedConverter" />
...
</ResourceDictionary>
</Window.Resources>
该规则的例外情况是implicit Styles(具有TargetType
而不是Key
的样式。)
在您的情况下,上述任何一项都不会有所帮助,因为 App.xaml 中的Resources
会受到特殊处理。它们被认为是全球资源,可以从任何地方引用。尝试在第一个示例中明确引用它们将导致
查找资源字典“App.xaml”时发生错误。
而是将 MainWindow.xaml 更改为
<Window x:Class="WpfApplication1.MainWindow"
...
Title="MainWindow" Height="350" Width="525">
<Grid>
<Button Style="{StaticResource algo}" />
</Grid>
答案 1 :(得分:0)
谢谢Funk,谢谢Mathew Jibin,你的解释引导我找到我认为的解决方案,它如下:
将App.xaml修改为:
<Application.Resources>
<Style TargetType="Button">
<Setter Property="Background" Value="Red" />
</Style>
</Application.Resources>
修改后的MainWindow删除Grid中的所有内容:
...
Title="MainWindow" Height="350" Width="525">
<Grid>
</Grid>
现在,每当我创建一个新按钮时,它都具有所需的样式。如果您发现此解决方案可能存在任何问题,请与我们联系。感谢。