我有一个简单的对话框,其中包含一些复选框,我希望有一个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属性绑定到其中一个复选框,则可以在复选框更改时看到按钮更改状态。
答案 0 :(得分:5)
在我看来,我有一个OkEnabled属性
默认情况下,绑定是相对于DataContext而不是视图。您是否将视图设置为自己的DataContext?
答案 1 :(得分:1)
正如你所说,OkEnabled的财产正在考虑之中。如果您使用MVVM,这是不正确的。它应该在模型中并将模型对象分配到视图的datacontext中。