我在C#中有一个带有词典的课程
public class Testing {
public Dictionary<string, OtherClass> AdditionalProperties {get;} = new Dictionary<string, ISomeIFace>();
}
public class OtherClass : ISomeIFace {
public string SomeProp { get; set; }
}
用于XAML文件
<CheckBox Grid.Column="0" IsChecked="{Binding AdditionalProperties[SomeKey].(local:OtherClass.SomeProp)}" />
它显示以下错误:
Type&#39; Dictionary&#39;不是一个集合。
SomeKey
下的卷曲线。
我很快安装了Resharper,我怀疑它之前没有告诉我这个错误。
我仍然可以编译并且代码运行成功,但如果没有错误错误会更好。
答案 0 :(得分:0)
从Resharper的角度来看:
如果这是Resharper'错误'警告的问题,请注意您可以通过执行Ctrl + Enter来执行以下操作:
答案 1 :(得分:0)
将属性指定为嵌套元素似乎可以修复错误。 尝试转换这个:
<CheckBox Grid.Column="0" IsChecked="{Binding AdditionalProperties[SomeKey].(local:OtherClass.SomeProp)}" />
到此:
<CheckBox Grid.Column="0">
<CheckBox.IsChecked>
<Binding Path="AdditionalProperties[SomeKey].(local:OtherClass.SomeProp)" />
</CheckBox.IsChecked>
</CheckBox>
答案 2 :(得分:0)
假设我有一个MenuItem。将字典设置为MenuItem的DataContext。然后在参数中设置键值,例如Command
<MenuItem Header="Exit" DataContext="{Binding MenuCommands, Mode=OneTime}"
Command="{Binding [File_Exit], Mode=OneTime}" />