/
hlebusheck
/
notes
Обзор
Документация
Войти
/
hlebusheck
/
notes
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
Notes.Wpf/Controls/Themes/TextBox/BaseTextBox.cs
56 строк
2 KB
Hlebusheck
Рефакторинг
21 янв 2023, 22:16
21 янв 2023, 22:16
d055c8e
Код
Авторство
О чём код?
using System; using System.Windows; using System.Windows.Input; namespace Notes.Wpf.Controls.Themes.TextBox { internal static class LocalExtensions { public static void ForTextBoxFromTemplate(this object templateFrameworkElement, Action<System.Windows.Controls.TextBox> action) { if (((FrameworkElement)templateFrameworkElement).TemplatedParent is System.Windows.Controls.TextBox textBox) action(textBox); } } public partial class BaseTextBox { void CutClick(object sender, RoutedEventArgs args) => sender.ForTextBoxFromTemplate(tb => tb.Cut()); void CopyClick(object sender, RoutedEventArgs args) => sender.ForTextBoxFromTemplate(tb => tb.Copy()); void PasteClick(object sender, RoutedEventArgs args) => sender.ForTextBoxFromTemplate(tb => tb.Paste()); void SelectAllClick(object sender, RoutedEventArgs args) => sender.ForTextBoxFromTemplate(tb => tb.SelectAll()); void ClearClick(object sender, RoutedEventArgs args) => sender.ForTextBoxFromTemplate(tb => tb.Clear()); void SelectLineClick(object sender, MouseButtonEventArgs e) { if(e.ClickCount != 3) return; sender.ForTextBoxFromTemplate(tb => { int lineIndex = tb.GetLineIndexFromCharacterIndex(tb.CaretIndex); int lineStartingCharIndex = tb.GetCharacterIndexFromLineIndex(lineIndex); int lineLength = tb.GetLineLength(lineIndex); tb.Select(lineStartingCharIndex, lineLength); }); } void ContextMenuOpened(object sender, RoutedEventArgs args) { sender.ForTextBoxFromTemplate(tb => { }); //if (SelectedText == "") // ContextMenuItemCopy.IsEnabled = ContextMenuItemCut.IsEnabled = false; //else // ContextMenuItemCopy.IsEnabled = ContextMenuItemCut.IsEnabled = true; //if (Clipboard.ContainsText()) // ContextMenuItemPaste.IsEnabled = true; //else // ContextMenuItemPaste.IsEnabled = false; } } }