2017-10-30 14 views
1

저는 caliburn.micro 웹 사이트에서 일하고 있으며이 예가 있습니다. 비밀번호가 null로 반환되는 이유는 무엇입니까? 여기에 나와 함께 작업하려는 예제의 그림을 참조하십시오.왜 caliburn.Micro 설명이 작동하지 않습니까?

<StackPanel> 
    <TextBox x:Name="Username" /> 
    <PasswordBox x:Name="Password" /> 
    <Button x:Name="Login" Content="Log in" /> 
</StackPanel> 

그리고 viewModel.cs에서 : enter image description here

내 view.xaml

내가 로그인 방법을 발사 로그인 버튼을 얻기 위해 관리해야
public void Login(string username, string password){ 
    MessageBox.show(password + " " + username) 
} 

하고 사용자 이름을 표시하지만 암호는 비어 있습니다.

+0

나머지 모델을 표시하십시오. ViewModel에 사용자 이름과 암호 ** 속성 **이 모두 있습니까? – Nkosi

+0

명시 적으로 'cal : Message.Attach'를 사용해보십시오. [여기] (https://caliburnmicro.com/documentation/actions)와 같이. 그냥 좁히려면. 왜 그것이 작동하지 않는지 모르겠다. (내가 기억하는 한, 보호 시그니처는 액션이어야하고,'void '를 리턴하고, 왜'string'을 리턴하는지 확실하지 않다.) 그리고 네, 작지만 반복적 인 것을 게시하십시오. – NSGaga

+0

@ Nkosi 모델에있는 모든 "속성"으로 이들을 가지고 있지 않습니다. 그것은 사용자 이름을 반환하지만 암호는 비어 있습니다. 속성 {get set}과 같은 속성입니까? – Daniel

답변

2

는 뷰 모델

public class LoginViewModel : PropertyChangedBase { 

    string username; 
    public string Username { 
     get { return username; } 
     set { 
      username = value; 
      NotifyOfPropertyChange(() => Username); 
      NotifyOfPropertyChange(() => CanLogin); 
     } 
    } 

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

    public bool CanLogin() { 
     return !String.IsNullOrEmpty(Username) && !String.IsNullOrEmpty(Password); 
    } 

    public void Login() { 
     MessageBox.show(Password + " " + Username) 
    } 
} 
1

예에서의 숙박을 대신 매개 변수가 지원되는 플랫폼, 특히 실버 라이트, 윈도우 전화 및 UWP의 일부에서 작동 다른 형식을 사용하는 것이 좋습니다.

그러나 WPF에서는 PasswordBox은 입력 된 암호에 대한 종속성 속성을 노출하지 않으므로 프레임 워크는 컨트롤에 입력 된 메서드를 바인딩 할 수 없습니다.

한 가지 방법은 입력 된 암호를 컨트롤에서 노출하는 사용자 고유의 연결된 속성을 만드는 것입니다.

그런 다음 PasswordBox 규칙을 사용자 정의하여 새 속성을 사용할 수 있습니다.

새로운 버전의 Caliburn.Micro가 이러한 플랫폼 중 일부에 대한 지원을 중단하게됨에 따라 홈페이지에서 예제를 다시 방문 할 때가 왔습니다.

관련 문제