2014-02-24 2 views
1

내 질문은 : 나는, ACBoxDest (이것은 단지 새로운 이벤트 EnterKeyDownAutoCompleteBox에서이 MyAutoCompleteBox을 상속했지만 그와 무관해야한다WPF AutoCompleteBox - .NET4.0

내 질문) 어디 ItemsSource 그냥 코드 숨김에 설정된 문자열 목록입니다.

ACBoxDest 안에있는 텍스트를 항상 DestPath이라는 코드 숨김에있는 공개 입력란과 동일하게 바인딩하고 싶습니다.

현재 코드 숨김에서 변수 DestPath을 변경하면 gui의 ACBoxDest 텍스트도 변경되지 않습니다.

.xaml :

<MyACBox:MyAutoCompleteBox x:Name="ACBoxDest" FilterMode="StartsWith" 
          Text="{Binding Path=DestPath, Mode=TwoWay}" 
          ItemContainerStyle="{StaticResource containerStyle}" 
          Populating="ACBoxDestPopulating" 
          KeyboardNavigation.TabIndex="1" 
          EnterKeyDown="EnterKeyHandler" 
          GotFocus="ACBoxDestFocused" 
          LostFocus="ACBoxDestUnfocused" /> 

코드 숨김 :

public string DestPath {get;set;} 
... 
private void Initialize() 
{ 
    DestPath = _DEFAULT_TARGET_PATH; 
    if (!ACBoxDest.Text.Equals(DestPath)) 
     MessageBox.Show("ACBoxDest.Text != DestPath"); 
} 

^디버깅을 설명 간략화를 들어, MessageBox마다 팝업. 즉, ACBoxDest의 텍스트는 Mode=TwoWay인데도 DestPath과 같지 않습니다. 왜 이런 일이 일어나고 어떻게 해결할 수 있는지 아는 사람이 있습니까?

매우 감사드립니다. 감사.

+1

실제'AutoCompleteBox '로 컨트롤을 스왑 아웃하고 동일한 문제가 있는지 확인하십시오. – Sheridan

+0

감사합니다. @Sheridan, 저는 이것을 지정하지는 않았지만 이미 시도했습니다. 같은 문제. –

답변

1

"DestPath"는 바인딩에서 사용하려면 속성이어야합니다.

바인딩의 소스는 다른 컨트롤, 공통 언어 런타임 (CLR) 개체 XAML 요소 ADO.NET의 데이터 집합, XML 단편 등의 속성을 비롯하여 공개 속성 일 수있다. 아래의 코멘트를 같이 MSDN

에서

자세한 내용 : 속성이 업데이트를 얻을 때 UI를 업데이트하기 위해, 당신의 VM 클래스에서 INotifyPropertyChanged를 구현해야하고, 당신이 마련 할 필요가 DestPath의 "설정" 속성이 변경되었습니다. 이 MSDN 링크는 세부 정보 및 샘플 코드가 포함되어 있습니다.

+0

감사합니다. 나는 물론 내가했던 과정에 대해 이야기하는 것에 거의 응답했다. 그러나 내가 더 가까이에서 보았을 때 나는 {get; set;} 부분을 빠뜨린 것을 깨달았다. 그래서 그 문제의 일부 고정. 그러나 DestPath 변경 여전히 ACBoxDest.Text (일명 MessageBox 변경) 변경하지 마십시오 –

+0

내 대답은 위의 업데이트되었습니다. –