0

AutoCompleteBox가 포함 된 UserControl을 만들려고합니다. 이 AutoCompleteBox의 SelectedItem 속성을 사용하여 사용자가 선택한 항목을 기반으로하는 정보로 다른 UserControls를 채 웁니다. selectedItem 그를 방지하기 위해 사용자가이 같은 DropDownClosed 이벤트를 실행하는 EventToCommand을 만든 드롭 다운에서 항목 사이를 "이동"할 때마다 해고하기 :Silverlight 3 + MVVM Light 툴킷이있는 AutoCompleteBox에 대한 오류 처리

명령 유형이다 : 공용 RelayCommand SelectedItemCommand {get; 개인 집합; }

사용자가 처음에 일치하는 항목을 입력하기 시작하면 예외가 발생하지만 사용자가 입력을 계속하고 더 이상 일치하는 항목이없는 경우 DropDown이 닫히고 실제로 항목이 선택되지 않습니다.

유형의 개체를 캐스팅 할 수 없습니다 'System.Windows.RoutedPropertyChangedEventArgs`1는 [선택 System.Boolean]' 'MyProject.ViewModels.MyItem'을 입력

내가 만들려고이 나에게 말한다 오류를 제공합니다 try-catch 문을 명령의 Command 메서드에서 호출하지만 예외가 발생하기 전에 예외가 발생하는 것으로 보입니다.

내 질문 : 일치하지 않는 경우 (즉, AutoCompleteBox에 실제 SelectedItem이 없다면) 명령이 실행되지 않도록하려면 어떻게해야합니까?

+0

하자 그리고 내가 MyItem에 캐스팅의 null 값이 없습니다. 이것은 올바른 방법인가, 아니면 더 좋은 방법인가? – JAS

답변

0

PassEventArgsToCommand를 사용하고 있습니까? 이 경우 RelayCommand는 RelayCommand <EventArgs>이어야하며 CommandParameter는 사용할 수 없습니다. 하나의 CommandParameter 만 가질 수있는 ICommand 인터페이스의 한계입니다. 성가신, 나도 알아,하지만 일반적으로 다른 방법을 사용하여 원하는 (예를 들어 SelectedItem을 TwoWay 바인딩으로 내 VM의 속성에 바인딩하여) 원하는 것을 얻을 수 있습니다.

내가 null 값을 확인 할 수 대신 를 전송하는 솔루션을 시도 알려 로랑

  0

안녕하세요, 분명히 EventToCommand에 대한 코드가 내 게시물에 표시되지 않았습니다. 나는 다음과 같은 방법으로 EventToCommand를 사용 <명령 EventToCommand 명령 = "{SelectedProductionCommand 바인딩}"CommandParameter는 = "{selectedItem가 바인딩, ElementName을 = loadProductionAutoCompleteBox}"PassEventArgsToCommand = "진정한"/> 정말 다음 아니에요 이 문제를 해결하기 위해 만든 제안 (VM 속성에 대한 TwoWay 바인딩). 정교하게 주시겠습니까? Btw, 내 게시물에 대해 작성한 의견 (<Object> 인스 트 <MyItem>) 관련 의견이 있으십니까? 이 나쁜 습관인가? 04 jun. 102010-06-04 12:27:04

  0

잘못된 서식 지정으로 불편을 끼쳐 드려 죄송합니다. 모든 줄 바꿈은 주석에서 무시됩니다! :/ 04 jun. 102010-06-04 12:27:55

  0

안녕하세요, 일부 징후가 삼켜 졌기 때문에 제 대답을 편집했습니다. 희망은 지금 더 의미가 있습니다. twoway 바인딩에 관해서, 당신은 무엇을 이해하지 못합니까? VM에서 속성을 정의하고 방금 정의한 TextBox.Text 속성과 VM 속성 사이의 TwoWay 데이터 바인딩을 설정하기 만하면됩니다. 이해가되지 않으면 이메일을 보내주십시오. 건배, Laurent 07 jun. 102010-06-07 11:17:25


+0

안녕하세요, 분명히 EventToCommand에 대한 코드가 내 게시물에 표시되지 않았습니다. 나는 다음과 같은 방법으로 EventToCommand를 사용 <명령 EventToCommand 명령 = "{SelectedProductionCommand 바인딩}"CommandParameter는 = "{selectedItem가 바인딩, ElementName을 = loadProductionAutoCompleteBox}"PassEventArgsToCommand = "진정한"/> 정말 다음 아니에요 이 문제를 해결하기 위해 만든 제안 (VM 속성에 대한 TwoWay 바인딩). 정교하게 주시겠습니까? Btw, 내 게시물에 대해 작성한 의견 ( 인스 트 ) 관련 의견이 있으십니까? 이 나쁜 습관인가? – JAS

+0

잘못된 서식 지정으로 불편을 끼쳐 드려 죄송합니다. 모든 줄 바꿈은 주석에서 무시됩니다! :/ – JAS

+0

안녕하세요, 일부 징후가 삼켜 졌기 때문에 제 대답을 편집했습니다. 희망은 지금 더 의미가 있습니다. twoway 바인딩에 관해서, 당신은 무엇을 이해하지 못합니까? VM에서 속성을 정의하고 방금 정의한 TextBox.Text 속성과 VM 속성 사이의 TwoWay 데이터 바인딩을 설정하기 만하면됩니다. 이해가되지 않으면 이메일을 보내주십시오. 건배, Laurent – LBugnion

관련 문제