将 System.Windows.Controls 存储到字典中
本文关键字:字典 存储 Controls System Windows | 更新日期: 2023-09-27 17:55:24
我需要一本字典,它将类型作为键,控制作为值。例如,对于字符串类型,控件将为文本框;对于布尔类型,控件将是单选按钮,依此类推...问题是当我声明字典时,例如Dictionary<Type, Control>
,并尝试添加文本框,例如它说文本框是一种类型,在给定的上下文中无效。有什么想法吗?
你必须声明Dictionary<Type, Type>
而不是Dictionary<Type, Control>
,因为TextBox
是Type
:
private static Dictionary<Type, Type> s_ControlTypes = new Dictionary<Type, Type>() {
{typeof(string), typeof(TextBox)},
{typeof(bool), typeof(RadioButton)},
};
然后使用它
// Let's create a control for, say, `bool` type:
Control ctrl = Activator.CreateInstance(s_ControlTypes[typeof(bool)]) as Control;
Dictionary<Type, Control> dictionary = new Dictionary<Type, Control>();
dictionary.Add(typeof(string), textBox);
dictionary.Add(typeof(bool), checkBox);
看起来您正在尝试将Control
类型(字面意思)添加到字典中,该字典应该包含Control
实例:
var dictionary = new Dictionary<Type, Control>();
dictionary.Add(typeof(string), TextBox);
你不能这么做。您需要放置Control
的特定实例,或者,如果这只是一个进一步参考的映射,请重新声明字典:
var dictionary = new Dictionary<Type, Type>();
并用类型填充它:
dictionary.Add(typeof(string), typeof(TextBox));
// and so on