IsEnabled绑定到布尔值

时间:2012-03-19 13:20:04

标签: wpf button data-binding isenabled

我有一个简单的对话框,其中包含一些复选框,我希望有一个Ok按钮,除非用户更改了设置,否则该按钮将被禁用。在我的视图中,我有一个OkEnabled属性,我将该按钮的isEnabled属性绑定到,如果复选框更改其值,则将OkEnabled设置为true,但由于某种原因,这不会启用该按钮。

public bool OkEnabled
{
    get
    {
        return m_okEnabled;
    }
    set
    {
        m_okEnabled = value;
        OnPropertyChanged("OkEnabled");
    }
}
<Button Content="OK" Style="{StaticResource MyButton}" Height="23" 
        HorizontalAlignment="Left" Margin="20" Name="m_okbutton" 
        VerticalAlignment="Top" Width="75"
        Click="okClick" IsEnabled="{Binding Path=OkEnabled}"/>

由于某种原因,当OkEnabled属性改变状态时,Ok按钮不会改变状态。如果我将IsEnabled属性绑定到其中一个复选框,则可以在复选框更改时看到按钮更改状态。

2 个答案:

答案 0 :(得分:5)

  

在我看来,我有一个OkEnabled属性

默认情况下,绑定是相对于DataContext而不是视图。您是否将视图设置为自己的DataContext?

答案 1 :(得分:1)

正如你所说,OkEnabled的财产正在考虑之中。如果您使用MVVM,这是不正确的。它应该在模型中并将模型对象分配到视图的datacontext中。