Clear / Erase TextBox Content With Button Click Ev

2020-02-07 06:45发布

问题:

I have the following XAML snippet:

<TextBox x:Name="FilterTB" TextChanged="FilterTB_TextChanged"/>
<Button x:Name="CancelFilterSelectionButton" FontWeight="Bold" Content="X"/>

I'd like to erase the content of the TextBox when the user presses the Button.

Of course doing so from Code Behind is a trivial task, but I wanted to accomplish it only through the use of XAML, and so using Triggers.

I tried researching on the net, but I either found uncorrect solutions, or overly-convoluted solutions, so I'd like to hear some clean and compact solutions.

回答1:

Here I had a spare minute, hope this helps, cheers.

namespaces;

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:ei="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions"

and easy peasy.

<StackPanel Orientation="Horizontal" 
            HorizontalAlignment="Center" 
            VerticalAlignment="Center">

   <TextBox x:Name="ThatThangToClear" Width="250"/>

   <Button x:Name="ClearThatThang" Content="Clear That Thang" Margin="5,0">
         <i:Interaction.Triggers>
            <i:EventTrigger EventName="Click">
               <ei:ChangePropertyAction 
                   TargetName="ThatThangToClear" 
                   TargetObject="{Binding ElementName=ThatThangToClear}"
                   PropertyName="Text" Value="{x:Null}"/>
            </i:EventTrigger>
        </i:Interaction.Triggers>           
   </Button>

</StackPanel>

Oh, and P.S. - You really only need either TargetName OR TargetObject but I included both for examples sake.