На Xamarin
есть элемент управления под названием Entry
. Он поддерживает TextPreview
, который походит на текст по умолчанию, который отображается в «фоновом режиме», когда TextBox пуст.TextPreview на текстовом поле WPF
Я использовал How can I add a hint text to WPF textbox?, чтобы заставить его работать над одним TextBox
. Теперь я хочу сделать это многоразовым (создайте CustomControl
в WPF
). Я также пытался подделать его в глобальный Style
here, но у меня действительно не было того, чего я хотел. -
Short story: Как я могу получить этот CustomControl?
Я не могу дальше, чем это:
public class TextboxWithPreview : TextBox
{
public TextboxWithPreview()
{
if(DesignerProperties.GetIsInDesignMode(this))
{
this.TextPreview = "Default TextPreview";
}
EventManager.RegisterClassHandler(typeof(TextboxWithPreview), TextChangedEvent, new TextChangedEventHandler(OnTextChanged));
}
public static readonly DependencyProperty TextPreviewProperty = DependencyProperty.Register("TextPreview", typeof(string), typeof(TextboxWithPreview));
private static void OnTextChanged(object sender, TextChangedEventArgs e)
{
//pseudo Code:
if(string.IsNullOrEmpty(this.Text))
{
this.Text = TextPreview;
this.ForeColor = Colors.Gray;
}
}
public string TextPreview
{
get { return (string)GetValue(TextPreviewProperty); }
set { SetValue(TextPreviewProperty, value); }
}
}
Мои мысли по этому поводу:
Можно ли зарегистрировать второе событие к существующей собственности? Если это так, я хотел бы прикрепить свой второй EventHandler к TextChanged
. Как только очищается Text
, я хочу показать Preview
.
Чтобы сделать вещи ясно:
Я хочу создать CustomControl - никаких обходных путей. Поскольку это реализовано в Xamarin.Forms.Entry
, это возможно.
Это называется водяной знак. См. Этот вопрос. ^^ –
@LynnCrumbling хорошо ... История Watermark - ОДНОЕ решение, чтобы заставить его работать. Как я уже описал выше, я уже работал, используя «Силез». «Дубликат», который вы предоставили, касается не создания настраиваемого элемента управления. –
Я вижу несколько ответов на этот вопрос, которые предоставляют решение, используя элемент управления, созданный в текстовом поле. Я не думаю, что вы изучили все ответы. –