129 lines
3.9 KiB
C#
129 lines
3.9 KiB
C#
|
|
using System.Windows;
|
|||
|
|
using System.Windows.Controls;
|
|||
|
|
using System.Windows.Media;
|
|||
|
|
|
|||
|
|
namespace WPFDark.Controls
|
|||
|
|
{
|
|||
|
|
public class BiaEditableTextBlock : Control
|
|||
|
|
{
|
|||
|
|
#region IsEditing
|
|||
|
|
|
|||
|
|
public bool IsEditing
|
|||
|
|
{
|
|||
|
|
get => _IsEditing;
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
if (value != _IsEditing)
|
|||
|
|
SetValue(IsEditingProperty, value);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private bool _IsEditing;
|
|||
|
|
|
|||
|
|
public static readonly DependencyProperty IsEditingProperty =
|
|||
|
|
DependencyProperty.Register(
|
|||
|
|
nameof(IsEditing),
|
|||
|
|
typeof(bool),
|
|||
|
|
typeof(BiaEditableTextBlock),
|
|||
|
|
new PropertyMetadata(
|
|||
|
|
false,
|
|||
|
|
(s, e) =>
|
|||
|
|
{
|
|||
|
|
var self = (BiaEditableTextBlock) s;
|
|||
|
|
self._IsEditing = (bool)e.NewValue;
|
|||
|
|
}));
|
|||
|
|
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
#region Text
|
|||
|
|
|
|||
|
|
public string? Text
|
|||
|
|
{
|
|||
|
|
get => _Text;
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
if (value != _Text)
|
|||
|
|
SetValue(TextProperty, value);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private string? _Text;
|
|||
|
|
|
|||
|
|
public static readonly DependencyProperty TextProperty =
|
|||
|
|
DependencyProperty.Register(
|
|||
|
|
nameof(Text),
|
|||
|
|
typeof(string),
|
|||
|
|
typeof(BiaEditableTextBlock),
|
|||
|
|
new PropertyMetadata(
|
|||
|
|
default,
|
|||
|
|
(s, e) =>
|
|||
|
|
{
|
|||
|
|
var self = (BiaEditableTextBlock) s;
|
|||
|
|
self._Text = (string)e.NewValue;
|
|||
|
|
}));
|
|||
|
|
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
#region Watermark
|
|||
|
|
|
|||
|
|
public string? Watermark
|
|||
|
|
{
|
|||
|
|
get => _Watermark;
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
if (value != _Watermark)
|
|||
|
|
SetValue(WatermarkProperty, value);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private string? _Watermark;
|
|||
|
|
|
|||
|
|
public static readonly DependencyProperty WatermarkProperty =
|
|||
|
|
DependencyProperty.Register(nameof(Watermark), typeof(string), typeof(BiaEditableTextBlock),
|
|||
|
|
new FrameworkPropertyMetadata(
|
|||
|
|
default(string),
|
|||
|
|
FrameworkPropertyMetadataOptions.AffectsRender |
|
|||
|
|
FrameworkPropertyMetadataOptions.SubPropertiesDoNotAffectRender,
|
|||
|
|
(s, e) =>
|
|||
|
|
{
|
|||
|
|
var self = (BiaEditableTextBlock) s;
|
|||
|
|
self._Watermark = e.NewValue?.ToString() ?? "";
|
|||
|
|
}));
|
|||
|
|
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
#region WatermarkForeground
|
|||
|
|
|
|||
|
|
public Brush? WatermarkForeground
|
|||
|
|
{
|
|||
|
|
get => _WatermarkForeground;
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
if (value != _WatermarkForeground)
|
|||
|
|
SetValue(WatermarkForegroundProperty, value);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private Brush? _WatermarkForeground;
|
|||
|
|
|
|||
|
|
public static readonly DependencyProperty WatermarkForegroundProperty =
|
|||
|
|
DependencyProperty.Register(nameof(WatermarkForeground), typeof(Brush), typeof(BiaEditableTextBlock),
|
|||
|
|
new FrameworkPropertyMetadata(
|
|||
|
|
default(Brush),
|
|||
|
|
FrameworkPropertyMetadataOptions.AffectsRender |
|
|||
|
|
FrameworkPropertyMetadataOptions.SubPropertiesDoNotAffectRender,
|
|||
|
|
(s, e) =>
|
|||
|
|
{
|
|||
|
|
var self = (BiaEditableTextBlock) s;
|
|||
|
|
self._WatermarkForeground = (Brush) e.NewValue;
|
|||
|
|
}));
|
|||
|
|
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
static BiaEditableTextBlock()
|
|||
|
|
{
|
|||
|
|
DefaultStyleKeyProperty.OverrideMetadata(typeof(BiaEditableTextBlock),
|
|||
|
|
new FrameworkPropertyMetadata(typeof(BiaEditableTextBlock)));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|