Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Bind visibility property to a variable

I have a Border with Label inside a Window,

<Border x:Name="Border1" BorderBrush="Black" BorderThickness="1" HorizontalAlignment="Left" Height="21" Margin="229,164,0,0" VerticalAlignment="Top" Width="90" Opacity="0.5">     <Grid>         <Label Content="test"/>     </Grid> </Border> 

I have also a Variable:

public bool vis = false; 

How could I bind the vis variable with border Visibility property?

like image 373
7zawel Avatar asked Feb 04 '13 17:02

7zawel


1 Answers

You don't need to make any converter.

Add a binding to a Visibility property for the border:

<Border x:Name="Border1" Visibility="{Binding Visibility}"    BorderBrush="Black" BorderThickness="1" HorizontalAlignment="Left" Height="21" Margin="229,164,0,0" VerticalAlignment="Top" Width="90" Opacity="0.5">     <Grid>         <Label Content="test"/>     </Grid> </Border> 

And then create the Visibility property in your ViewModel:

private Visibility visibility; public Visibility Visibility     {         get         {             return visibility;         }         set         {             visibility = value;              OnPropertyChanged("Visibility");         }     } 

Now you can set Visible or Hidden to your Visibility property as follows:

Visibility = Visibility.Visible; // or Visibility = Visibility.Hidden; 

The Visibility enum is located in System.Windows namespace, so your ViewModel has to include using System.Windows;.

like image 127
Ladislav Ondris Avatar answered Sep 20 '22 20:09

Ladislav Ondris