Button.IsEnabled 不能正常工作.
我调试了代码,属性的setter被"true"值命中.但该按钮仍然被禁用.
View.xaml:
<StackPanel Grid.Row="2" Margin="0,20,0,0" >
<Button Name="ButtonOk" Content="OK" Margin="0,0,4,0" IsEnabled="{Binding SomethingIsValid}" Command="{Binding CommandOk}" />
<Button Name="ButtonCancel" Content="Cancel" Margin="0,0,4,0" IsCancel="True" /
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
View.xaml.cs:
...
public View(ViewModel viewModel)
{
this.InitializeComponent();
this.viewModel = viewModel;
this.DataContext = viewModel;
}
Run Code Online (Sandbox Code Playgroud)
视图模型:
public bool SomethingIsValid
{
get
{
return somethingIsValid;
}
set
{
this.somethingIsValid= value;
this.RaisePropertyChanged(() => this.SomethingIsValid);
}
}
#region IDataErrorInfo
public string this[string columnName]
{
get
{
this.SomethingIsValid= false;
if ("SomeName" == columnName)
{
if (string.IsNullOrEmpty(this.Status))
{
return "Please bla bla..";
}
}
this.SomethingIsValid = true;
return string.Empty;
}
}
public string Error
{
get
{
return string.Empty;
}
}
#endregion
public ICommand CommandOk
{
get
{
if (this.commandOk == null)
{
this.commandOk = new RelayCommand(this.CommandOkAktion, () => this.SomethingIsValid );
}
return this.commandOk;
}
}
Run Code Online (Sandbox Code Playgroud)
如果您使用的是命令,则单独绑定按钮的IsEnabled属性并不是一个好主意.相反,您应该在命令的"CanExecute"中提供正确的值.这也将启用按钮.
如果仍有问题,请确保您的IsEnabled属性位于Command属性之后。
<Button Command="{Binding StartCommand}" IsEnabled="{Binding StartEnabled}" />
Run Code Online (Sandbox Code Playgroud)
-作品
<Button IsEnabled="{Binding StopEnabled}" Command="{Binding StopCommand}" />
Run Code Online (Sandbox Code Playgroud)
-不起作用
请注意,我的两个命令都可以始终执行。对我来说更容易解决。
| 归档时间: |
|
| 查看次数: |
12109 次 |
| 最近记录: |