Wpf 登录视图-登录按钮最初不会根据CanLogin值禁用,直到我们第一次单击它。

Wpf 登录视图-登录按钮最初不会根据CanLogin值禁用,直到我们第一次单击它。,wpf,caliburn.micro,Wpf,Caliburn.micro,我刚开始研究Caliburn Micro 2.0.0,并开始使用一个简单的登录页面实现。 我的页面xaml如下所示 <StackPanel Grid.Column="1" Grid.Row="1"> <StackPanel Orientation="Horizontal" Margin="2"> <TextBlock Text="Login name"

我刚开始研究Caliburn Micro 2.0.0,并开始使用一个简单的登录页面实现。 我的页面xaml如下所示

  <StackPanel Grid.Column="1" Grid.Row="1">
        <StackPanel Orientation="Horizontal"
                    Margin="2">
            <TextBlock Text="Login name"
                       Width="100"/>
            <TextBox x:Name="LoginName" 
                     Width="200" />
        </StackPanel>
        <StackPanel Orientation="Horizontal"
                    Margin="2">
            <TextBlock Text="Password" 
                       Width="100"/>
            <TextBox x:Name="Password" 
                     Width="200" />
        </StackPanel>
        <Button x:Name="Login" 
                Content="Submit"
                Width="100"
                Margin="2"/>
    </StackPanel>
  public class LoginViewModel : PropertyChangedBase
{
    private string loginName;
    public string LoginName
    {
        get
        {
            return loginName;
        }
        set
        {
            loginName = value;
            NotifyOfPropertyChange(() => LoginName);
            NotifyOfPropertyChange(() => CanLogin);
        }
    }

    private string password;
    public string Password
    {
        get { return password; }
        set
        {
            password = value;
            NotifyOfPropertyChange(() => Password);
            NotifyOfPropertyChange(() => CanLogin);
        }
    }

    public bool CanLogin
    {
        get
        {
            return !string.IsNullOrWhiteSpace(LoginName) && !string.IsNullOrWhiteSpace(Password);
        }
    }

    public void Login()
    {

    }
}
我不确定这里面是否有错误。 但是,在我第一次单击登录之前,登录按钮始终处于启用状态

有趣的是,当我使用calibur 1.5时,它工作得非常完美


请帮我解决这个问题。

我见过类似的情况,但请告诉我。。。按钮实际上是禁用的,但看起来只是启用了,还是实际上启用了,如果单击它,它会工作?当窗体最初加载时,按钮应该在其实际启用的位置最初禁用。当用户单击时,它正在调用其绑定操作,其中我现在需要在Login方法中检查CanLogin,如public void Login{if CanLogin{}从那时起,它就可以正常工作了。调试时是否在表单加载时调用了CanLogin属性getter?否。。。。。。。。。。我想知道为什么。。。。当我们第一次单击按钮时,它将首先被调用…非常奇怪,您的LoginView模型在哪里实例化?它是否位于继承自导体或屏幕的另一个ViewModel中?