private void CreateBinderCouples(PropertyBinder binder) { binder.AddPropertyCouple(new PropertyCouple <string, string>("Name", "Name")); binder.AddPropertyCouple(new PropertyCouple <double, double>("ChatFontSize", "ChatFontSize")); binder.AddPropertyCouple(new PropertyCouple <double, double>("LineBreakHeight", "LineBreakHeight")); binder.AddPropertyCouple(new PropertyCouple <int, int>("SpacingCount", "SpacingCount")); binder.AddPropertyCouple(new PropertyCouple <System.Windows.Media.FontFamily, System.Windows.Media.FontFamily>("ChatFont", "ChatFont")); binder.AddPropertyCouple(new PropertyCouple <bool, bool>("IsAlwaysOnTop", "IsAlwaysOnTop")); binder.AddPropertyCouple(new PropertyCouple <bool, bool>("IsClickThrough", "IsClickThrough")); binder.AddPropertyCouple(new PropertyCouple <bool, bool>("IsAutoHide", "IsAutoHide")); binder.AddPropertyCouple(new PropertyCouple <TimeSpan, TimeSpan>("AutoHideTimeout", "AutoHideTimeout")); //binder.AddPropertyCouple(new PropertyCouple<bool, bool>("IsHiddenByUser", "IsHiddenByUser")); binder.AddPropertyCouple(new PropertyCouple <System.Windows.Media.Color, System.Windows.Media.Color>("BackGroundColor", "BackGroundColor")); binder.AddPropertyCouple(new PropertyCouple <bool, bool>("ShowTimestamps", "ShowTimestamps")); binder.AddPropertyCouple(new PropertyCouple <System.Drawing.RectangleD, System.Drawing.RectangleD>("ChatWindowRectangle", "ChatWindowRectangle")); binder.AddPropertyCouple(new PropertyCouple <TranslationEngineName, System.Windows.Data.CollectionView>("TranslationEngineName", "TranslationEngines", (ref TranslationEngineName x, ref System.Windows.Data.CollectionView y) => { var engine = x; var collection = y; UiWindow.Window.UIThread(() => { TranslationEngine result = null; foreach (TranslationEngine elem in collection.SourceCollection) { if (elem.EngineName == engine) { result = elem; break; } } if (result != null) { if (!collection.CurrentItem.Equals(result)) { collection.MoveCurrentTo(result); } } }); }, (ref System.Windows.Data.CollectionView y, ref TranslationEngineName x) => { var collection = y; TranslationEngineName selectedEngine = TranslationEngineName.GoogleTranslate; UiWindow.Window.UIThread(() => { selectedEngine = ((TranslationEngine)collection.CurrentItem).EngineName; }); x = selectedEngine; })); binder.AddPropertyCouple(new PropertyCouple <TranslatorLanguague, System.Windows.Data.CollectionView>("FromLanguague", "TranslateFromLanguagues", (ref TranslatorLanguague x, ref System.Windows.Data.CollectionView y) => { var languague = x; var collection = y; UiWindow.Window.UIThread(() => { TranslatorLanguague result = null; foreach (TranslatorLanguague elem in collection.SourceCollection) { if (elem.SystemName == languague.SystemName) { result = elem; break; } } if (result != null) { if (!collection.CurrentItem.Equals(result)) { collection.MoveCurrentTo(result); } } }); }, (ref System.Windows.Data.CollectionView y, ref TranslatorLanguague x) => { var collection = y; TranslatorLanguague lang = new TranslatorLanguague(); UiWindow.Window.UIThread(() => { lang = new TranslatorLanguague((TranslatorLanguague)collection.CurrentItem); }); x = lang; })); binder.AddPropertyCouple(new PropertyCouple <TranslatorLanguague, System.Windows.Data.CollectionView>("ToLanguague", "TranslateToLanguagues", (ref TranslatorLanguague x, ref System.Windows.Data.CollectionView y) => { var languague = x; var collection = y; UiWindow.Window.UIThread(() => { TranslatorLanguague result = null; foreach (TranslatorLanguague elem in collection.SourceCollection) { if (elem.SystemName == languague.SystemName) { result = elem; break; } } if (result != null) { if (!collection.CurrentItem.Equals(result)) { collection.MoveCurrentTo(result); } } }); }, (ref System.Windows.Data.CollectionView y, ref TranslatorLanguague x) => { var collection = y; TranslatorLanguague lang = new TranslatorLanguague(); UiWindow.Window.UIThread(() => { lang = new TranslatorLanguague((TranslatorLanguague)collection.CurrentItem); }); x = lang; })); binder.AddPropertyCouple(new PropertyCouple <WinUtils.HotKeyCombination, WinUtils.HotKeyCombination>("ShowHideChatKeys", "ShowHideChatKeys")); binder.AddPropertyCouple(new PropertyCouple <WinUtils.HotKeyCombination, WinUtils.HotKeyCombination>("ClickThoughtChatKeys", "ClickThoughtChatKeys")); binder.AddPropertyCouple(new PropertyCouple <WinUtils.HotKeyCombination, WinUtils.HotKeyCombination>("ClearChatKeys", "ClearChatKeys")); binder.AddPropertyCouple(new PropertyCouple <List <ChatCodeViewModel>, BindingList <ChatCodeViewModel> >("ChatCodes", "ChatCodes", (ref List <ChatCodeViewModel> x, ref BindingList <ChatCodeViewModel> y) => { var list = x; var bindinglist = y; UiWindow.Window.UIThread(() => { foreach (var code in list) { var fCode = bindinglist.FirstOrDefault(p => p.Equals(code)); if (fCode != null) { fCode.Color = code.Color; fCode.IsChecked = code.IsChecked; } } }); }, (ref BindingList <ChatCodeViewModel> y, ref List <ChatCodeViewModel> x) => { var list = x; var bindinglist = y; UiWindow.Window.UIThread(() => { foreach (var code in bindinglist) { var fCode = list.FirstOrDefault(p => p.Equals(code)); if (fCode != null) { fCode.Color = code.Color; fCode.IsChecked = code.IsChecked; } } }); })); }