static void BindHotkeyPref(KeyValuePair<string, string> kv, KeySettings ks, Widget template, Widget parent) { var key = template.Clone() as Widget; key.Id = kv.Key; key.IsVisible = () => true; var field = ks.GetType().GetField(kv.Key); if (field == null) throw new InvalidOperationException("Game.Settings.Keys does not contain {1}".F(kv.Key)); key.Get<LabelWidget>("FUNCTION").GetText = () => kv.Value + ":"; var textBox = key.Get<HotkeyEntryWidget>("HOTKEY"); textBox.Key = (Hotkey)field.GetValue(ks); textBox.OnLoseFocus = () => field.SetValue(ks, textBox.Key); parent.AddChild(key); }