wpf如何绑定到DataContext存在?

kat*_*tit 10 c# wpf datacontext binding

我在代码中动态设置datacontext.我想要启用/禁用屏幕上的按钮,具体取决于是否DataContext == null.当我分配DataContext时,我可以在代码中完成它,但如果我可以像那样绑定它会更好:)

Chr*_*Wue 16

DataTriggerDataContextnull为空时,您应该能够使用按钮样式来禁用按钮.另一个选项是将IsEnabled属性绑定到DataContext并使用值转换器返回falseif是否DataContext为null true.

带触发器:

<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>
Run Code Online (Sandbox Code Playgroud)

带转换器:

转换器:

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

并使用它

<UserControl.Resources>
   <local:DataContextSetConverter x:Key="dataContextSetConverter"/>
</UserControl.Resources>

...

<Button IsEnabled="{Binding Path=DataContext, RelativeSource={RelativeSource Self}, Converter={StaticResource dataContextSetConverter}}"/>
Run Code Online (Sandbox Code Playgroud)