如何将事件绑定到更改XAML WPF中树中另一个元素的属性?

时间:2011-06-22 04:42:51

标签: wpf events xaml

我将从代码开始,因为它应该是相当不言自明的:

<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的事件,如果用户单击TextBox右侧的X按钮,则会执行该事件。我想做的是挂钩该事件,并清除TextBox的Text属性。我正在寻找一种纯粹在XAML中执行此操作的方法,没有代码隐藏,也没有访问ViewModel。

1 个答案:

答案 0 :(得分:1)

您可以使用称为“附加行为”的概念来实现此目的,附加属性在附件处理目标对象上的事件并执行某些操作。请参阅以下文章:

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/