2

我在哪里运行我的CreateBestPriceListCanExecute方法以便CanExecute在下面的代码片段中更新我的?

class BestPriceViewModel : ViewModelBase
{
    ObservableCollection<BestPriceModel> bestPriceList = new ObservableCollection<BestPriceModel>();

    public ICommand createBestPriceListCommand;
    private bool canExecute = true;
    public BestPriceViewModel()
    {
        createBestPriceListCommand = new RelayCommand(CreateBestPriceList, param => this.CanExecute);
        btnLoadItemList = "Import";
    }     public ObservableCollection<BestPriceModel> BestPriceList
    {
        get { return this.bestPriceList; }
        set
        {
            if (this.bestPriceList != value)
            {
                this.bestPriceList = value;
                this.OnPropertyChanged("BestPriceList");
            }
        }
    }

    public bool CanExecute
    {
        get
        {
            return this.canExecute;
        }

        set
        {
            if (this.canExecute == value)
            {
                return;
            }

            this.canExecute = value;
        }
    }
    public ICommand CreateBestPriceListCommand
    {
        get
        {
            return createBestPriceListCommand;
        }
        set
        {
            createBestPriceListCommand = value;
        }
    }

    public bool CreateBestPriceListCanExecute()
    {
        bool DbCheck = DataBaseAccess.connection.State != ConnectionState.Open &&
        DataBaseAccess.connection.State != ConnectionState.Fetching &&
        DataBaseAccess.connection.State != ConnectionState.Executing ? true : false;
        return DbCheck;
    }
}

我的CreateBestPrice方法是使用数据库,它有一个在后台运行的自动数据库更新程序,有时会上传信息。那些时候我需要我CanExecute是假的,还有其他方法吗?

4

1 回答 1

1

只需从您的方法更新您的CanExecute属性:CreateBestPriceListCanExecute

public void CreateBestPriceListCanExecute()
{
    CanExecute = DataBaseAccess.connection.State != ConnectionState.Open &&
    DataBaseAccess.connection.State != ConnectionState.Fetching &&
    DataBaseAccess.connection.State != ConnectionState.Executing ? true : false;
}

然后由您决定调用CreateBestPriceListCanExecute方法的频率。例如,您可以从DispatcherTimer.Tick事件处理程序中调用它。

于 2015-04-29T09:20:03.230 回答