Установить значение по умолчанию для ComboBox - PullRequest
1 голос
/ 22 июня 2011

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

- Выбрать элемент -

Элемент1

Элемент2

Элемент3

Я не хочу,Элемент - появится в списке, только в самом поле со списком.Также я не хочу, чтобы это значение было редактируемым.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 22 июня 2011

Вы можете переопределить шаблон по умолчанию и включить туда TextBlock, который виден только в том случае, если SelectedItem равен null (для этого используйте стиль с дататригером).Чтобы получить шаблонную табличку по умолчанию, вы можете изменить , проверьте MSDN (Default WPF Themes ссылка).

1 голос
/ 24 июня 2011

Я думаю, что самый простой способ сделать это с помощью простого стиля:

<ComboBox>
  <ComboBox.Style>
    <Style TargetType="ComboBox">
      <Setter Property="IsEditable" Value="True" />
      <Setter Property="IsReadOnly" Value="True" />

      <Style.Triggers>
        <Trigger Property="SelectedIndex" Value="-1">
          <Setter Property="Text" Value="-- Select Item --" />
        </Trigger>
      </Style.Triggers>
    </Style>
  </ComboBox.Style>
</ComboBox>

Установка IsEditable = "True" включает свойство Text в ComboBox. Чтобы гарантировать невозможность редактирования свойства Text, также требуется IsReadOnly = "True".

1 голос
/ 22 июня 2011

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

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

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