Добавление кнопки в выпадающий список в wpf - PullRequest
1 голос
/ 11 мая 2010

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

| TextBox | X | v |

Я думал что-то вроде ...

<Style...>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate>
                <ControlTemplate.Resources>
                    <Style TargetType="{x:Type TextBox}">...Add button here...</Style>
                </ControlTemplate.Resources>
                <ContentPresenter />
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

1 Ответ

3 голосов
/ 11 мая 2010

Я не думаю, что предложенный вами подход будет работать. Как только вы установите свойство Template в стиле, вам также придется переопределить его визуальное представление. Однако вы можете определить скорректированный ControlTemplate для TextBox (как вы предлагали) в разделе Resources ComboBox (не в его шаблоне!).

<ComboBox ...>
    <ComboBox.Resources>
        <Style TargetType="{x:Type TextBox}">
            <Setter Property="Template">
                <ControlTemplate TargetType="{x:Type TextBox}">
                    <!-- define template for TextBox with an additional "clear" button -->
                </ControlTemplate>
            </Setter>
        </Style>
    </ComboBox.Resources>
</ComboBox>

Но тогда у вас все еще есть проблема как обработать нажатие на эту кнопку ...

A чистое решение относится к подклассу ComboBox и предоставляет ICommand, который очищает текущий выбор. Затем вы должны переопределить ComboBox ControlTemplate, добавить кнопку «очистить» помимо кнопки выпадающего меню и привязать эту кнопку к новой ICommand. Это определенно довольно трудоемкая работа, но, в конце концов, у вас есть чистое решение, которое вы можете легко расширить позже.

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