Question

I created a new WPF MVVM application via Online Templates->WPF in VS2010->WPF MVVM project template. I created a checkbox labeled "Refresh Enabled?" next to the "Refresh" button that I wanted to enable/disable the "Refresh" button when clicked. I bound the IsChecked property of my checkbox to aMainWindowViewModel property I called CanRefreshDate, and it raises RaisePropertyChanged(()=>CanRefreshDate); in its setter. Also in the MainWindowViewModel, I added my newly created CanExecuteRefreshDate(), which returns the bool of CanRefreshDate property. However, when I click the checkbox, the button "Refresh" is never enabled/disabled to match. What is the proper way to fix this, and is this an oversight in the template or what?

Here's my modifications to the template code:

Xaml:

<CheckBox Content="Refresh Enabled?" 
          IsChecked="{Binding CanRefreshDate}"/>

MainWindowViewModel.cs:

private bool _CanRefreshDate;
public bool CanRefreshDate
{
    get { return _CanRefreshDate; }
    set
    {
        if (_CanRefreshDate != value)
        {
            _CanRefreshDate = value;
            RaisePropertyChanged(() => CanRefreshDate);
        }
    }
}

public ICommand RefreshDateCommand { get { return new DelegateCommand(OnRefreshDate, CanExecuteRefreshDate); } }

private bool CanExecuteRefreshDate()
{
    return CanRefreshDate;
}

I noticed that the template had RaiseCanExecuteChanged() misspelled RasieCanExecuteChanged() in DelegateCommand.cs and changed that. I was able to get it all working by removing RaiseCanExecuteChanged() and modifying the

public event Handler CanExecuteChanged;  

to :

public event EventHandler CanExecuteChanged
{
    add { CommandManager.RequerySuggested += value; }
    remove { CommandManager.RequerySuggested -= value; }
}

However, I would like to know what the proper solution for this is and why the template doesn`t work. Am i missing something, doing something wrong or what? Please create a new solution and use the template I did and tell me what is going on! Thanks!

Était-ce utile?

La solution

The author fixed the issue and released version 4.1 of the template yesterday.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top