In my WPF application I am trying to change the visibility of a button depending on the options chosen by a user. On load I want one of the buttons to not be visible. I am using the in built value converter BooleanToVisibilityConverter. However it's not working as the button is appearing at load time. I have changed the property to both true and false, makes no difference. Below is my code, I can't see what I'm missing?
The property in my View Model
bool ButtCancel
{
get { return _buttCancel; }
set
{
_buttCancel = value;
OnPropertyChanged("ButtCancel");
}
}
In my app.xaml
<Application.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVis"/>
In my MainWindow.xaml
<Button Grid.Column="2"
Command="{Binding CommandButtProgressCancel}"
Content="Cancel"
Visibility="{Binding ButtCancel, Converter={StaticResource BoolToVis}}"
IsEnabled="{Binding ButtCancelEnabled}"
Height="50" Width="120"
HorizontalAlignment="Center"
VerticalAlignment="Center" Margin="0,0,50,20"/>
ButtCancel
propertypublic
? It has no access modifier in your code excerpt, which would make itprivate
and thus invisible to the binding engine. Also, you should not be binding theIsEnabled
property; let the button use your command'sCanExecute
callback to determine its own state. – Argonautinternal
and notprivate
. – Militaryinternal
; for class members, including nested type declarations, it isprivate
. – Argonaut