Pull to refresh

Comments 8

Можно же ведь просто вставить компонент как <local:AdvancedTextBox Placeholder="Enter Some Text" />
не?
Конечно можно, но так как я пишу код руками, то когда закрываешь тег, студия автоматом вставляет закрывающий… А я ему и не препятствую
Свойства лучше делать через DependencyProperty. В вашем случае к placeholder нельзя будет ничего привязать. Что помешает использовать такой компонент, например при локализации.
Плохое решение. И совсем недавно был похожий пост, я там дал ссылку как правильно делать такие вещи. Нужно делать через стиль, UserControl не нужен.
В контрол добавил пару свойств
public event TextChangedEventHandler TextChanged;
public event TextCompositionEventHandler TextInput;


Пробросил пару обработчиков событий:
private void tbMain_TextChanged(object sender, TextChangedEventArgs e)
{
        if (this.TextChanged != null)
                this.TextChanged(sender, e);
}

private void tbMain_TextInput(object sender, TextCompositionEventArgs e)
{
        if (this.TextInput != null)
                this.TextInput(sender, e);
}


При вводе символов tbMain_TextChanged вызывается, а вот tbMain_TextInput при нажатии enter — нет. Где грабель?
Кстати, в WP Toolkit есть контрол PhoneTextBox, который делает все то же самое. Это я на заметку.
if (tbMain.Text.Trim() == "")
{
    tbMain.Text = this.placeholder;
}

мне кажется, лучше использовать стандартные методы
if (string.IsNullOrWhiteSpace(tbMain.Text))
{
    tbMain.Text = this.placeholder;
}
Кто бы написал статью про создание собственного input компонента, который умеет вызывать экранную клавиатуру?
Sign up to leave a comment.

Articles