Как провести рефакторинг событий в WPF? - PullRequest
2 голосов
/ 06 марта 2012

У меня есть несколько текстовых полей с событиями TextChanged, привязанными к одному и тому же обработчику

<TextBox TextChanged="TextBox_TextChanged" />
<TextBox TextChanged="TextBox_TextChanged" />
<TextBox TextChanged="TextBox_TextChanged" />
<TextBox TextChanged="TextBox_TextChanged" />

Есть ли способ сделать что-то подобное?

<StackPanel>
    <StackPanel.Resources>
        <Style TargetType="TextBox">
            <Setter Property="TextChanged" Value="TextBox_TextChanged" />
         </Style>
    </StackPanel.Resources>
    <TextBox />
    <TextBox />
    <TextBox />
    <TextBox />
</StackPanel>

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

Ответы [ 2 ]

4 голосов
/ 06 марта 2012

Если вы хотите это в стиле:

<Style TargetType="{x:Type TextBox}">
    <EventSetter Event="TextChanged" Handler="TextBox_TextChanged"/>
</Style>
4 голосов
/ 06 марта 2012

Если я не ошибаюсь, вы можете поместить атрибут TextBoxBase.TextChanged="TextBox_TextChanged" в общий элемент контейнера всех ваших текстовых полей, например:

<StackPanel TextBoxBase.TextChanged="TextBox_TextChanged">
    <TextBox />
    <TextBox />
    <TextBox />
    <TextBox />
</StackPanel>
...