处理时WPF MVVM更新状态

时间:2013-08-05 18:38:41

标签: wpf mvvm enums

我正在使用WPF MVVM中由枚举状态发出信号的验证。单击按钮即可触发验证。 这是命令的枚举和代码:

public enum StatusTest {None, Ok, Error, Processing }

public ICommand TestConnectionCommand
{
    get
    {
        if (_testConnectionCommand == null)
            _testConnectionCommand = new RelayCommand(
                () => this.Test());

        return _testConnectionCommand;
    }
}
void Test()
{
    Status = StatusTest.Processing;
    if ( ValidationMethod()) Status = StatusTest.Ok;
    else Status = StatusTest.Error;
}

在按钮旁边,我有一个圆圈,与enum StatusTest链接,该状态更改了状态更改。     目前它只显示最终状态(ok或错误),从不处理。如何在验证过程中通过颜色处理填充圆圈?

1 个答案:

答案 0 :(得分:3)

看来您的所有工作都在UI线程上,因此第一个Status的setter不会生效。将代码更改为以下,让Test()在不同的线程上工作。

public enum StatusTest {None, Ok, Error, Processing }

public ICommand TestConnectionCommand
{
    get
    {
        if (_testConnectionCommand == null)
            _testConnectionCommand = new RelayCommand(
                () => ThreadPool.QueueUserWorkItem(Test));

        return _testConnectionCommand;
    }
}
void Test(object state)
{
    Status = StatusTest.Processing;
    if ( ValidationMethod()) Status = StatusTest.Ok;
    else Status = StatusTest.Error;
}