WPF Combobox: курсор вне границ при попытке ввести текст с длиной> шириной поля - PullRequest
5 голосов
/ 16 декабря 2010

Я работаю с редактируемым списком, в который можно вводить текст в области текстового поля поля со списком WPF. Если длина введенного текста больше ширины комбинированного списка, курсор по-прежнему отображается вне комбинированного списка и в форме, но текст не отображается. Есть ли способ ограничить перемещение курсора из выпадающего списка?

Спасибо.

Ответы [ 3 ]

1 голос
/ 15 апреля 2014

Используйте ScrollViewer для PART_ContentHost вместо границы.Например:

<ControlTemplate x:Key="ComboBoxTextBox" TargetType="{x:Type TextBox}">
    <ScrollViewer x:Name="PART_ContentHost" Focusable="False" Background="{TemplateBinding  Background}" />
</ControlTemplate>
... 
<TextBox x:Name="PART_EditableTextBox" Style="{x:Null}" Template="{StaticResource ComboBoxTextBox}" 
...
0 голосов
/ 12 ноября 2012

Я не знаю, нашли ли вы решение для этого, но у меня та же проблема, и, как я вижу сейчас, она исходит из этой части кода:

<ControlTemplate x:Key="ComboBoxTextBox" TargetType="{x:Type TextBox}">
    <Border x:Name="PART_ContentHost" Focusable="False" Background="{TemplateBinding Background}" />
</ControlTemplate>

... ивнутри стиля ComboBox, в Setter for Template:

... 
<TextBox x:Name="PART_EditableTextBox" Style="{x:Null}" Template="{StaticResource ComboBoxTextBox}" 
...

Удаление этого шаблона, похоже, решает проблему и создает некоторые другие незначительные проблемы.

0 голосов
/ 16 декабря 2010

Вы можете переопределить стиль по умолчанию и установить свойство MaxLength для TextBox, используемого для представления контента (PART_EditableTextBox), а затем повторно использовать этот стиль, где это необходимо.

Если вы предпочитаете делать это в коде, вы можете проверить этот SO ответ , который приведет к тому же поведению, но не заставит вас создавать стиль.

EDIT:

Если вы хотите, чтобы это было более динамичным, вам придется измерить текст . Вы можете обработать событие TextChanged и выполнить измерение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...