@핸썸가이 좋은 질문 주셔서 감사합니다.
저도 답변 읽어보면서 많이 도움 되었네요.
그리고 잘 해결 하셨으니! 질문과는 벗어나는 내용이지만 저는 CommunityToolkit.Mvvm을 통해 구현하는 방법에 대해서도 간략하게 남겨두겠습니다.
만약 이 라이브러리를 통한 Command 구현을 필요로 하시는 분들에게는 유용할 것입니다.
(모든 상황에서 만능은 아니지만 지금 같은 상황에서는 아주 심플하고 간단하게 처리할 수 있습니다.)
xaml은 크게 다른게 없네요.
<StackPanel>
<TextBox Text="{Binding Keywords, UpdateSourceTrigger=PropertyChanged}"/>
<Button Content="Save" Command="{Binding SaveCommand}"/>
</StackPanel>
ViewModel에서는 CommunityToolkit.Mvvm 라이브러리에서 제공하는 기술 총 동원~
(각각의 어트리뷰트를 유심히 추척해보면 됩니다.)
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
namespace JamesCommand
{
public partial class MyViewModel : ObservableObject
{
[ObservableProperty]
[NotifyCanExecuteChangedFor(nameof(SaveCommand))]
private string _keywords;
private bool CanSave(object o)
{
return !string.IsNullOrWhiteSpace(Keywords) && Keywords.Length > 0;
}
[RelayCommand(CanExecute = nameof(CanSave))]
private void Save(object o)
{
// Save.
}
}
}
결과
CanSave false
CanSave true
여기까지 입니다~
읽어주셔서 감사합니다.