简单的WPF问题 我有一个文本框和一个OK按钮,我正在使用MVVM模式。 我想要做的只是当textBox.Length>时才启用OK按钮。 0
但我得到的只是当textBox失去焦点时才启用按钮。
我错过了什么吗?
我已将datacontext绑定到viewmodel并完成以下操作。 为什么不起作用?
感谢您的帮助
<TextBox Grid.Column="1"
Grid.Row="2"
Margin="4"
Name="txtName" Text="{Binding Path=Name}"/>
<Button x:Name="btnOK"
MinWidth="70" Padding="3.5"
Margin="3.5"
Grid.Column="1"
Content="OK"
Click="OnOk"
Command="{Binding Path=OKCommand}"
VerticalAlignment="Center"
HorizontalAlignment="Left" IsDefault="True" />
public class TestViewModel : ViewModelBase
{
private string _name;
public string Name
{
get { return _name; }
set
{
_name = value;
OnPropertyChanged("Name");
}
}
private RelayCommand _OkCommand;
public ICommand OKCommand
{
get
{
return _OkCommand ?? (_OkCommand = new RelayCommand(x => Execute(), x => CanExecute));
}
}
private bool CanExecute
{
get
{
return !string.IsNullOrEmpty(Name);
}
}
private void Execute()
{
//do something here
}
答案 0 :(得分:4)
交换此行:
Text="{Binding Path=Name}"
使用
Text="{Binding Path=Name,UpdateSourceTrigger=PropertyChanged}"
这样,每次Text-property更改时绑定都会更新。 TextBox的Text属性的默认值是LostFocus。