You can use a DataTrigger -style DataTrigger to disable your button when the DataContext is null. Another option is to bind the IsEnabled property to the DataContext and use the value converter to return false if the DataContext is null and true otherwise.
With trigger:
<Button> <Button.Style> <Style TargetType="{x:Type Button}"> <Style.Triggers> <DataTrigger Binding="{Binding Path=DataContext, RelativeSource={RelativeSource Self}}" Value="{x:Null}"> <Setter Property="IsEnabled" Value="false"/> </DataTrigger> </Style.Triggers> </Style> </Button.Style> </Button>
With converter:
Converter
public class DataContextSetConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { return value != null; } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } }
And use it
<UserControl.Resources> <local:DataContextSetConverter x:Key="dataContextSetConverter"/> </UserControl.Resources> ... <Button IsEnabled="{Binding Path=DataContext, RelativeSource={RelativeSource Self}, Converter={StaticResource dataContextSetConverter}}"/>
Chriswue
source share