WPF绑定到控件上的布尔值

WPF绑定到控件上的布尔值,wpf,binding,Wpf,Binding,我想知道是否有人有一个简单简洁的解决方案来绑定一个依赖属性,它需要与属性相反。这里有一个例子 我有一个基于datacontext中的属性禁用的文本框,例如: <TextBox IsEnabled={Binding CanEdit} Text={Binding MyText}/> 需求发生了变化,我希望将其设置为只读,而不是禁用,因此在不更改ViewModel的情况下,我可以执行以下操作: 在UserControl资源中: <UserControl.Resources>

我想知道是否有人有一个简单简洁的解决方案来绑定一个依赖属性,它需要与属性相反。这里有一个例子

我有一个基于datacontext中的属性禁用的文本框,例如:

<TextBox IsEnabled={Binding CanEdit} Text={Binding MyText}/>

需求发生了变化,我希望将其设置为只读,而不是禁用,因此在不更改ViewModel的情况下,我可以执行以下操作:

在UserControl资源中:

<UserControl.Resources>
  <m:NotConverter x:Key="NotConverter"/>
</UserControl.Resources>

然后将文本框更改为:

<TextBox IsReadOnly={Binding CanEdit,Converter={StaticResource NotConverter}} Text={Binding MyText}/>

我个人认为这是非常冗长的

我希望能够做到这一点(注意!):


但唉,据我所知,这不是一个选择

我可以想出两个选择

  • 创建一个附加属性
    IsNotReadOnly
    FrameworkElement
    (?)并绑定到该属性
  • 如果我更改ViewModel,那么我可以添加一个属性
    CanEdit
    和另一个属性
    CannotEdit
    ,这让我有点尴尬,因为我相信它会向类添加一个不相关的属性,我认为这不是一个好的做法
这个问题的主要原因是,在我的项目中,上面的内容不仅仅是一个控件,因此,为了使我的项目尽可能保持干爽和可读性,我向任何感受到我的痛苦的人抛出这个问题,并提出了一个解决方案:)

<TextBox IsReadOnly={Binding !CanEdit} Text={Binding MyText}/>