2013-04-29 81 views
0

我想设置使用多重绑定的按钮的IsEnabled属性,因为此属性取决于三个变量。为什么我不能在按钮的IsEnabled属性中使用多重绑定?

如果我将设置内容属性格式,我可以使用此代码:

<Button Height="23" HorizontalAlignment="Left" Margin="629,49,0,0" Name="btnMyButton" VerticalAlignment="Top" Width="75"> 
        <Button.Content> 
         <MultiBinding Converter="{StaticResource myMultiValueConverter}"> 
          <Binding ElementName="MyElement"/> 
          <Binding /> 
         </MultiBinding> 
        </Button.Content> 
</Button> 

我尝试使用此代码:

<Button Height="23" HorizontalAlignment="Left" Margin="629,49,0,0" Name="btnMyButton" VerticalAlignment="Top" Width="75"> 
        <Button.IsEnabled> 
         <????? 

但在这种情况下,虽然Button.IsEnabled是可用,在下一行我找不到Multibinding关键字,所以我不能使用IsEnabled属性的多重绑定。

为什么?有没有办法用多值转换器设置IsEnabled属性?

谢谢。

回答

2

语法应与您的Button.Content完全相同 - 只需将"Content"替换为"IsEnabled"即可。

<Button.IsEnabled> 
    <MultiBinding Converter="{StaticResource myMultiValueConverter}"> 
     <Binding ... /> 
     <Binding ... /> 
     <Binding ... /> 
    </MultiBinding> 
</Button.IsEnabled> 

它可能无法自动完成你因为IsEnabled属性需要一个布尔值,而不是一个MultiBinding对象,但它不应该给你任何错误,将编译和执行就好了。

(它自动完成了Button.Content因为Content属性为object类型,其中包括一个MultiBinding对象)

+0

最后我编译Button.Content,然后通过的IsEnabled更改内容,编译,然后工作。谢谢。 – 2013-04-29 18:06:27

+0

@Rachel这里唯一的问题是'UpdateSourceTrigger =“PropertyChanged”'不会触发绑定。我试着在每个'Binding'元素和'MultiBinding'元素中放入'UpdateSourceTrigger =“PropertyChanged”',但它不更新。我必须改变它的工作重点 – Ozkan 2017-09-01 12:26:40

相关问题