How does one add a DataTrigger
to a TextBlock
and provide some default value? Well, it's actually quite simple, but I have noticed that quite a few people fall down on this one. Firstly, you cannot have set a DataTrigger
on anything that is not a Style
, ControlTemplate
, or DataTemplate
. Great, so I will set up a Style
for my TextBlock
, right? The answer is yes, but you must ensure that you do not override the Text
property in your TextBlock
, and set the default value in the Style
instead like this :
<style x:Key="StatusBlock"
TargetType="TextBlock"
BasedOn="{StaticResource {x:Type TextBlock}}">
<setter Property="Text" Value="Default Text!"/>
</style>
<style .Triggers>
<datatrigger
Binding="{Binding Path=CurrentView.IsRefreshing}"
Value="true">
<setter Property="TextBlock.Text"
Value="Status: Refreshing! (please wait)..."/>
</datatrigger>
</style>
Your TextBlock
should be defined with the text not set, like this:
<textblock Style="{StaticResource StatusBlock}"/>
This article was originally posted at
http://www.sunmetablog.co.uk?p=171
We cannot achieve perfection but we can strive for excellence. Excellence through creativity that pushes innovation, collaboration that facilitates productivity, knowledge that empowers people and persistence that eventually pays off !
Enjoy what you do and do what you enjoy !