private static void OnPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var button = (ButtonBase)d; if (button == null) { return; } var str = GetProperty(d); if (str == null) { return; } var select = WPFOperate.FindVisualParent <ListBoxItem>(button); var listbox = WPFOperate.FindVisualParent <ListBox>(select); if (listbox == null) { return; } button.DataContext = BindingEvaluator.GetValue(listbox.DataContext, str); button.Click += (s2, e2) => { var command = (ICommand)BindingEvaluator.GetValue(listbox.DataContext, str); if (command.CanExecute(@select.DataContext)) { command.Execute(@select.DataContext); } }; }
private static void OnPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var listBoxItem = (FrameworkElement)d; if (listBoxItem == null) { return; } var str = GetProperty(d); var listbox = WPFOperate.FindVisualParent <ListBox>(listBoxItem); if (listbox == null) { return; } var dataContext = listbox.DataContext; listBoxItem.MouseDown += (s2, e2) => { if (e2.ClickCount != 2) { return; } var command = (ICommand)BindingEvaluator.GetValue(dataContext, str); if (command.CanExecute(listBoxItem.DataContext)) { command.Execute(listBoxItem.DataContext); } }; }
private static void OnPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var listBoxItem = (MenuItem)d; if (listBoxItem == null) { return; } var str = GetJumpBinding(d); var listbox = WPFOperate.FindVisualParent <FrameworkElement>(listBoxItem, str.RealSource); if (listbox == null) { return; } var dataContext = listbox.DataContext; listBoxItem.Click += (s2, e2) => { var command = (ICommand)BindingEvaluator.GetValue(dataContext, str.Property); if (command.CanExecute(listBoxItem.DataContext)) { command.Execute(listBoxItem.DataContext); } }; }
private static void OnPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var button = (FrameworkElement)d; var prop = GetProperty(d); var select = WPFOperate.FindVisualParent <ListBoxItem>(button); var dataContext = select.DataContext; select.MouseLeftButtonUp += (s2, e2) => { var info = dataContext.GetType().GetProperty(prop); var va = (bool)info.GetValue(dataContext, new object[] {}); va = !va; info.SetValue(dataContext, va, new object[] {}); }; }