А-а-а-а. Так в таком случае (я так понимаю у вас необязательный выбор) лучше сделать кнопку а-ля ClearSelection. Наследуемся от ComboBox, создаем стиль, в котором меняем Template. В Popup со списком добавляем Button с командой по клику, которая ставил SelectedItem = null или SelectedIndex = -1. Там же делаем триггеры, чтобы показать ваш DefaultText и убрать эту кнопку если SelectedItem = null или SelectedIndex = -1.
Вот у контролов Telerik так сделано:
Понимаю, муторно, но если у вас есть Expression Blend, то такие вещи делаются 30 минут с обычными контролами. Если нет — нужно мучить босса/себя, чтобы его купить.
The first method involves using reflection.
…
Property change notifications can be provided either by implementing the INotifyPropertyChanged interface ...
The third method for resolving object references involves a source object that is a DependencyObject and a source property that is a DependencyProperty. In this case, the data binding engine does not need to use reflection. Instead, the property engine and the data binding engine together resolve the property reference independently. This is the optimal method for resolving object references used for data binding.
http://mediahint.com/default.pac:
http://use.edgefonts.net/droid-sans:n4:all.js
. Так все работает.С другой стороны, это не ClickOnce и приятнее было бы выбрать директорию установки.
Вот у контролов Telerik так сделано:
Понимаю, муторно, но если у вас есть Expression Blend, то такие вещи делаются 30 минут с обычными контролами. Если нет — нужно мучить босса/себя, чтобы его купить.
Да, согласен, так меньше шансов ошибиться, но не стоит забывать, что этот код будет работать значительно медленнее:
Разумеется, если не работать с большими-большими объемами данных разница будет не ощутима, так что для многих вещей это разумный вариант. :-)