Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > UserControl с внешним видом TextBox


Автор: snav 31.1.2010, 12:14
Всем опять привет.
Возникла задача сделать собственный элемент управления. При этом надо, чтобы его внешний вид не отличался от стандартного TextBox (функционал контрола будет другой, поэтому наследовать класс от TextBox не хотелось бы, внутри моего контрола будет несколько дочерних контролов). Проблема, однако, в том, что в разных системах TextBox выглядит по-разному. Посоветуйте, как быть?

Автор: Partizan 31.1.2010, 15:42
snav, если функционал совсем уж другой - лично мне кажется не логичным использование внешнего вида textbox.

что будет делать контрол?

Автор: snav 31.1.2010, 16:35
Контрол предназначен для ввода нескольких текстовых полей, разделенных статическим текстом. Что-то типа MaskedTextBox. Внутри контрол будет содержать несколько дочерних TextBox (без рамки) и переход между ними будет по клавише Tab. То есть визульно - это должен быть как обычный TextBox, но редактироваться техт будет не целиком, а по частям.

Для примера, настройка времени в Windows:
user posted image

Автор: DjoNIK 2.2.2010, 11:33
Может для тебя Border подойдет

Автор: snav 2.2.2010, 18:43
Я сейчас использую Border. Но проблема в том, как узнать, какую кисть и какие закругления нужно использвать.

Автор: exBlender 2.2.2010, 22:54
Просто использовать RichTextBox 
Код

<RichTextBox Width="200" Height="20">
    <FlowDocument>
        <Paragraph>
            <InlineUIContainer>
                <TextBlock>
                    <Run Text="TextBlock1"/><Run Text="TextBlock2"/><Run Text="TextBlock3"/>
                </TextBlock>
            </InlineUIContainer>
        </Paragraph>
    </FlowDocument>
</RichTextBox>

Автор: snav 3.2.2010, 19:02
exBlender, спасибо. Интересная идея, завтра попробую.

Автор: snav 4.2.2010, 18:57
Попробовал сделать так, получилось не очень хорошо. Вложенные элементы TextBox отображаются в неактивном состоянии (темно-серый текст на сером фоне). Явное задание Enabled=true в XAML не помогло.

Автор: exBlender 6.2.2010, 03:34
Ну, тогда -  пардон.
Теоретически, наверное, можно применить измененный стиль, переписав TextBox темплейт и изменив в триггере IsEnabled="False" значения Foregraund  и Background на дефолтные...

Автор: SergeyLoginov 26.2.2010, 17:02
Цитата(snav @ 4.2.2010,  18:57)
Попробовал сделать так, получилось не очень хорошо. Вложенные элементы TextBox отображаются в неактивном состоянии (темно-серый текст на сером фоне). Явное задание Enabled=true в XAML не помогло.

Чтобы активировать вложенные элементы, необходимо установить значение свойства RichTextBox.IsDocumentEnabled в True

Автор: snav 15.10.2010, 17:18
exBlender, SergeyLoginov
Большое спасибо. Ваши советы очень помогли.
Если модератор читает эту тему, добавьте, пожалуйста, им по плюсику (у меня недостаточно прав).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)