문제

내가 다음 M V-VM 패턴 내 WPF UI.내가 좋아하는 명령을 TextChanged 이벤트의 텍스트 상자를 명령을 내 뷰 모델 클래스입니다.유일한 방법은 나의 생각할 수 있는 이 작업을 완료하는 상속에서 텍스트 상자를 제어 및 구현하 ICommandSource.그런 다음 지시하는 명령하여 발사되니다이것은 너무 많은 일을 위해 무언가가 그렇게 간단합니다.

이 있는 쉬운 방법(보다는 하위 클래스고 텍스트 상자에 구현 ICommandSource)연결하는 TextChanged 이벤트를 내 뷰 모델 class?

도움이 되었습니까?

해결책

첫째,당신은 확실히려 두 방법으로 데이터 바인딩을,뷰 모델로 UpdateSourceTrigger 의 PropertyChanged?는 방법을 제공 setter 의 속성에 바인딩하는 것이라는 매 시간 텍스트가 변경되었나요?

는 경우에는 충분하지 않음 낚시 도구를 사용하여이 문제를 첨부 동작을 적용할 수 있습니다.에는 줄리안이즈의 블로그는 문서 하는 방법에 대해 뭔가 매우 비슷 Silverlight,해야에 쉽게 적응할 수 있 WPF.

기본적으로,개인정보취급방침(이라고 말 TextBoxBehaviours)정의된 재산이라는(아마도)TextChangedCommand 의 유형 ICommand.결 OnPropertyChanged 처리기는 시설 내에 핸들러를 확인하는 시간에 설정 텍스트 상자;는 경우에 그것은,핸들러를 추가하 TextChanged 이벤트에 텍스트 상자를 호출하는 명령어에서 지정한 시설을 제공합니다.

그런 다음,가정의 시점에 할당되었는 매핑되는 당신의보기에,당신은 것처럼 사용:

<TextBox
  x:Name="MyTextBox"
  TextBoxBehaviours.TextChangedCommand="{Binding ViewModelTextChangedCommand}" />

다른 팁

를 사용하는 이벤트는 바인딩 방법령되지 않을 수도 있 옳은 일을 사용합니다.정확히 무엇을 할 것 이 명령을 할까?

을 고려할 수 있습을 사용하여 데이터 바인딩하는 문자열 필드에서 당신의 VM.이 방법은 당신이 전화를 걸 수 있습니다 명령 또는 기능이 거기에서 보다는 오히려한 UI 다.

<TextBox Text="{Binding WorldName}"/>
....
public string WorldName
{
    get
    {
        return WorldData.Name;
    }
    set
    {
        WorldData.Name = value;
        OnPropertyChanged("WorldName");
        // CallYourCustomFunctionHere();
    }
}

수은 당신이 아니라 처리 TextChanged 이벤트와에서 명령을 실행가?

private void _textBox_TextChanged(object sender, EventArgs e)
{
    MyCommand.Execute(null);
}

대체로서,당신이 말한 것을 만들기 TextBox 로 작동하는 명령 소스지 않는 것 같은 잔인하지 않는 한 그것은 무언가를 당신이 계획에서 공유 및 활용에서는 많은 장소입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top