我已经在我的WPF应用程序中创建了我想在多个xaml页面中使用的控件样式.为此,我创建了一个Resources.xaml并在那里添加了样式.
然后在我的页面中添加此代码
<Grid.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/SampleEventTask;component/Resources.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Grid.Resources>
Run Code Online (Sandbox Code Playgroud)
在两个页面上,这工作正常,但在第3页上,我收到一个编译错误,说:
添加到IDictionary的所有对象必须具有Key属性或与其关联的其他类型的键.
如果我为此添加一个键,如此ResourceDictionary x:Key ="x",那么编译错误就会发生,但是在运行应用程序时它会错误地找到样式.
我可以通过将原始(没有指定键)"ResourceDictionary"xaml从顶级Grid移动到该页面上包含的Grid中来使编译错误消失并运行应用程序.
但我不明白这里发生了什么.关于问题是什么的任何建议,我只是错过了什么或做错了什么.有没有更好的方式来分享风格?
谢谢
除了该页面中合并的ResourceDictionary之外,是否还定义了其他任何资源?
例如,这是我创建的Window的片段.
<Window x:Class="SelectionPagePrototype.SelectionPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:SelectionPagePrototype"
Title="SelectionPage" MinHeight="600" MinWidth="800" Loaded="OnLoaded">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="ImageResourceDictionary.xaml" />
</ResourceDictionary.MergedDictionaries>
<local:QuickPickCheckedConverter x:Key="quickPickConverter" />
<local:BoolToCaptionConverter x:Key="captionConverter" />
<local:ProductAndImageTypeConverter x:Key="imageConverter" />
</ResourceDictionary>
</Window.Resources>
<Grid> ...
Run Code Online (Sandbox Code Playgroud)
合并的字典不需要密钥,但该窗口的其他资源也需要密钥.
| 归档时间: |
|
| 查看次数: |
10040 次 |
| 最近记录: |