绑定模式(TwoWay)如何工作?

时间:2011-04-21 07:25:00

标签: wpf binding

我正在尝试一些虚拟应用程序来测试绑定模式。所以,只是想知道绑定模式是如何工作的。我有这个xaml代码 -

<Button x:Name="btn"
                Height="20"
                Width="200"
                VerticalAlignment="Top">
            <Button.Style>
                <Style TargetType="{x:Type Button}">
                    <Setter Property="IsEnabled"
                            Value="{Binding CanEnable, Mode=TwoWay}" />
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding TextChanged}" Value="true">
                            <Setter Property="IsEnabled"
                                    Value="true" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </Button.Style>
        </Button>

此处按钮IsEanbled绑定到我的viemodel属性“CanEanble”,其默认值为false。现在在我的触发器中,我正在听“TextChanged”属性并将按钮IsEnabled设置为true。按钮被启用,因为它应该是,但即使将biding模式设置为TwoWay,属性“CanEnable”也没有设置为true。 为什么会发生这种情况?

1 个答案:

答案 0 :(得分:2)

通过设置触发器中的值,您基本上可以删除之前在样式设置器中设置的绑定。仔细看看风格。您会注意到,基本上您将属性IsEnabled设置为两次。首先在样式设置器中,在触发器中排在第二位。第二个值覆盖先前的值是合乎逻辑的。

如果使用SetCurrentValue方法设置依赖项属性的值,则可以从代码中实现所需的效果:

SetCurrentValue(Button.IsEnabledProperty, true);

这样,不会删除在此属性上设置的绑定,它将按预期工作。