I have a ListView bound to ObservableCollection. Data are loaded from the internet and then added to collection. The download takes few seconds and I want to indicate user that the data is loading.
I created an UserControl that indicates activity. I placed it inside of ControlTemplate.
<ControlTemplate x:Key="ListViewControlTemplate1" TargetType="{x:Type ListView}">
<Grid>
<local:ActivityIndicatorControl
HorizontalAlignment="Center"
Height="Auto"
Margin="0"
VerticalAlignment="Center"/>
</Grid>
</ControlTemplate>
I would like to bind Visibility of ActivityIndicatorControl
to a property, let's say bool IsLoading
and set it to Visible/Collapsed correspondingly.
Thanks!
Use .NET's built in Converter
.NET 3 has a built in BooleanToVisibilityConverter.
(Note: May not be available on all platforms, ex: mobile)
First add it to your Resources
Then use it on an element
Inverting
How do I invert BooleanToVisibilityConverter?
If you want to invert the converter (ex: hide the element when your property is true), this answer has a custom implementation of
IValueConverter
that supports that via XAMLI would recommend using a
IValueConverter
to accept your boolean, and return a member of Visibility enumeration.Here is a good example of one: http://jeffhandley.com/archive/2008/10/27/binding-converters---visibilityconverter.aspx
The XAML would look like this:
First you define a resource for the converter (put this in a resource dictionary):
And then change your template like this: