2

我有一个继承IDictionary命名的类ResourceDictionary
此外,我还有另一个属性DictionaryKeyProperty名为Style.
DictionaryKeyProperty命名为TargetType

XAML 文件内容:

<ResourceDictionary
             xmlns="clr-namespace:Test;assembly=Test"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    <Style TargetType="test" />
</ResourceDictionary>

它给出了错误Each dictionary entry must have an associated key.

public class ResourceDictionary : IDictionary, ICollection, IEnumerable, INameScope, ISupportInitialize
{
   ...
}

[ContentProperty("Setters"), DictionaryKeyProperty("TargetType")]
public class Style : Sealable, INameScope, IQueryAmbient, IResources
{

    private Type _TargetType;
    [Ambient]
    public Type TargetType
    {
        get { return _TargetType; }
        set
        {
            CheckSealed();
            if (value == null)
                throw new ArgumentNullException("value");
            _TargetType = value;
        }
    }

    ......

}

我究竟做错了什么?
我怎么解决这个问题?

PS:我想制作一个包含 WPF 等依赖系统的轻量级框架。

4

1 回答 1

1

XAML 编译器抱怨,因为您的样式定义缺少 Key 属性。

将其更改为:

<Style x:Key="someKey" TargetType="test" />

..将使错误消失,但由于我怀疑您想为控件声明默认样式,因此需要您始终使用该样式引用该样式

<Test Style="{StaticResource someKey}" />

这可能不是您的想法。

你能用“test”类的代码更新问题吗?

于 2013-09-07T08:51:29.040 回答