您不能将 booleanIsEnabled属性设置为 type 的值MultiBinding。这就是正在发生的事情。
正如@Viv 指出的那样,您可以声明 aStyle来完成繁重的工作:
<Style x:Key="ButtonStyle" TargetType="{x:Type Button}">
<Setter Property="IsEnabled">
<Setter.Value>
<MultiBinding Converter="{StaticResource ResourceKey=MyConverter}">
<Binding Path="IsConnected" />
<Binding Path="IsOpened" />
</MultiBinding>
</Setter.Value>
</Setter>
</Style>
<Button Name="MyButton" Content="Click me!" Style="{StaticResource ButtonStyle}" />
Button DataContext如果具有这些属性,则此方法效果很好。如果他们每个人都有不同DataContext的绑定,那么它会特别有效,因为不同的原因启用它们。
如果它们都绑定到相同的DataContext,或者属性位于不同的对象上,则可以使用Freezable Trick提供按钮将绑定到的值:
<BindingProxy x:Key="isEnabled">
<BindingProxy.Data>
<MultiBinding Converter="{StaticResource ResourceKey=MyConverter}">
<Binding Path="IsConnected" />
<Binding Path="IsOpened" />
</MultiBinding>
</BindingProxy.Data>
</BindingProxy>
<Button Name="MyButton" Content="Click me!" IsEnabled="{Binding Data, Source={StaticResource isEnabled}}" />