Как связать событие с изменением свойства другого элемента в дереве в XAML WPF? - PullRequest
1 голос
/ 22 июня 2011

Я начну с кода, так как он должен быть достаточно понятен:

<commonControls:SearchTextBox
                    x:Name="searchTextBox"
                    Margin="6,0"
                    HorizontalAlignment="Right"
                    MinWidth="50"
                    Width="130"
                    SearchMode="Instant"
                >
                    <i:Interaction.Triggers>
                        <i:EventTrigger EventName="Search">
                            <cmd:EventToCommand Command="{Binding Search}"
                                    CommandParameter="{Binding ElementName=searchTextBox, Path=Text}" />
                        </i:EventTrigger>
                        <i:EventTrigger EventName="Cancel">
                            <!-- Code to set searchTextBox.Text to Empty -->
                        </i:EventTrigger>
                    </i:Interaction.Triggers>
                </commonControls:SearchTextBox>

У SearchTextBox есть событие с именем Cancel, которое выполняется, если пользователь нажимает кнопку Xправая сторона TextBox.Я хотел бы подключиться к этому событию и очистить свойство Text элемента TextBox.Я ищу способ сделать это исключительно в XAML, без кода и без использования ViewModel.

1 Ответ

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

Вы можете достичь этого, используя концепцию, называемую «прикрепленное поведение», вложенные свойства, которые в приложении обрабатывают события на целевом объекте и в результате выполняют некоторое действие. Смотрите следующую статью:

http://www.codeproject.com/KB/WPF/AttachedBehaviors.aspx

Я вижу, вы уже используете смешанные взаимодействия. Blend предоставляет простую структуру поведения, облегчающую реализацию, вы просто переопределяете метод OnAttach, чтобы добавить свою логику. Смотрите пример здесь:

http://www.scottlogic.co.uk/blog/colin/2011/06/metro-in-motion-part-7-panorama-prettiness-and-opacity/

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