I have got a view model with a property:
public class MyModel { public bool IsEnabled {get;set;} }
I want to use this property to toggle a button state. If the boolean is true I want to hide the button, and otherwise show it.
I tried things like:
<Button Visibility= "{Binding IsEnabled ? Hidden : Visible }">Enable</Button>
But this doesn't fit.
I tried some more complex solution but my guess is, I am missing something trivial.
Any suggestions?
Since you want to toggle between Hidden
and Visible
and true is hidden you can either write custom IValueConverter
or use simple Style.Trigger
<Button Content="Enable"> <Button.Style> <Style TargetType="{x:Type Button}"> <Setter Property="Visibility" Value="Visible"/> <Style.Triggers> <DataTrigger Binding="{Binding IsEnabled}" Value="True"> <Setter Property="Visibility" Value="Hidden"/> </DataTrigger> </Style.Triggers> </Style> </Button.Style> </Button>
This is all assuming the DataContext
is set accordingly and MyModel.IsEnabled
raises INotifyPropertyChanged.PropertyChanged
event whenever changed
public class MyModel : INotifyPropertyChanged { private bool _isEnabled; public bool IsEnabled { get { return _isEnabled; } set { _isEnabled = value; OnPropertyChanged("IsEnabled"); } } #region INotifyPropertyChanged public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged(string propertyName) { var handler = PropertyChanged; if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); } #endregion }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With