123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- using System;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Data;
- using System.Windows.Documents;
- using System.Windows.Media;
- using System.Windows.Input;
- namespace OpenSEMI.Ctrlib.Controls
- {
- public class EditTextBlockAdorner: Adorner
- {
- public TextBoxEx TextBox
- {
- get { return this._textBox; }
- }
- private readonly VisualCollection _collection;
- private readonly TextBoxEx _textBox;
- private readonly TextBlock _textBlock;
- public EditTextBlockAdorner(EditTextBlock adornedElement)
- : base(adornedElement)
- {
- _collection = new VisualCollection(this);
- _textBox = new TextBoxEx();
- _textBlock = adornedElement;
- Binding binding = new Binding("Text") { Source = adornedElement };
- binding.Mode = BindingMode.TwoWay;
- _textBox.SetBinding(TextBoxEx.TextProperty, binding);
- _textBox.EditBoxMode = adornedElement.EditBoxMode;
- _textBox.AllowEmpty = adornedElement.AllowEmpty;
- _textBox.AllowBackgroundChange = adornedElement.AllowBackgroundChange;
- _textBox.MaxValue = adornedElement.MaxValue;
- _textBox.MinValue = adornedElement.MinValue;
- _textBox.Accuracy = adornedElement.Accuracy;
- _textBox.IsScrollToEnd = adornedElement.IsScrollToEnd;
- binding = new Binding("TextSaved") { Source = adornedElement };
- binding.Mode = BindingMode.TwoWay;
- _textBox.SetBinding(TextBoxEx.TextSavedProperty, binding);
- _textBox.KeyUp += _textBox_KeyUp;
- _collection.Add(_textBox);
- if (!adornedElement.IsEnabled)
- _textBlock.Background = Brushes.Gray;
- }
- public event RoutedEventHandler TextBoxLostFocus
- {
- add
- {
- _textBox.LostFocus += value;
- }
- remove
- {
- _textBox.LostFocus -= value;
- }
- }
- public event KeyEventHandler TextBoxKeyUp
- {
- add
- {
- _textBox.KeyUp += value;
- }
- remove
- {
- _textBox.KeyUp -= value;
- }
- }
- protected override Visual GetVisualChild(int index)
- {
- return _collection[index];
- }
- protected override int VisualChildrenCount
- {
- get
- {
- return _collection.Count;
- }
- }
- protected override Size ArrangeOverride(Size finalSize)
- {
- _textBox.Arrange(new Rect(0, 0, _textBlock.ActualWidth, _textBlock.ActualHeight));
- _textBox.Focus();
- _textBox.ScrollToEnd();
-
- return finalSize;
- }
- private void _textBox_KeyUp(object sender, KeyEventArgs e)
- {
- if (e.Key == Key.Enter)
- {
- _textBox.Text = _textBox.Text.Replace("\r\n", string.Empty);
- BindingExpression expression = _textBox.GetBindingExpression(TextBoxEx.TextProperty);
- if (null != expression)
- expression.UpdateSource();
- expression = _textBox.GetBindingExpression(TextBoxEx.TextSavedProperty);
- if (null != expression)
- expression.UpdateSource();
- }
- }
- }
- }
|