【问题标题】:why can't I use multibinding with the IsEnabled property of the button?为什么我不能对按钮的 IsEnabled 属性使用多重绑定?
【发布时间】:2013-04-23 10:11:55
【问题描述】:

我正在尝试使用多重绑定设置按钮的 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 属性?

谢谢。

【问题讨论】:

    标签: wpf button binding multibinding isenabled


    【解决方案1】:

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

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

    它可能不会为您自动完成,因为 IsEnabled 属性需要一个布尔值,而不是 MultiBinding 对象,但它不应该给您任何错误,并且可以正常编译和执行。

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

    【讨论】:

    • 最后我用 Button.Content 编译,然后通过 IsEnabled 更改内容,编译然后工作。谢谢。
    • @Rachel 这里唯一的问题是UpdateSourceTrigger="PropertyChanged"不会触发绑定。我尝试将UpdateSourceTrigger="PropertyChanged" 放入每个Binding 元素以及MultiBinding 元素中,但它没有更新。我必须改变它的工作重点
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-09
    • 1970-01-01
    • 2011-01-19
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多