1

我有一个包含几个复选框的简单对话框列表,我希望有一个确定按钮,除非用户更改设置,否则该按钮将被禁用。在我看来,我有一个 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 属性更改状态时,确定按钮不会更改状态。如果我将 IsEnabled 属性绑定到其中一个复选框,我可以看到按钮在复选框更改时更改状态。

4

2 回答 2

5

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

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

于 2012-03-19T13:22:54.050 回答
1

正如你所说, OkEnabled 属性在视图中。如果您使用的是 MVVM,这是不正确的。它应该在模型中并将模型对象分配到视图的数据上下文中。

于 2012-03-19T13:32:07.570 回答