2010-12-10 7 views
1

ViewModel의 BidAgent가 초기 값으로 설정된 후 Text 속성을 설정하지 않는 이유를 알 수 없습니까? 검색과 선택은 잘 작동하지만 초기 바인딩은 작동하지 않습니다. 기본적으로 뷰의 뷰 모델 (BidAgent)을 설정하면 BidAgent의 값에서 명시 적으로 생성 된 선택한 항목의 텍스트가 표시됩니다. 어떤 아이디어가 이것을 어떻게?Autocomletebox : 선택한 항목이 무엇인지 보여주는 텍스트 속성을 바인딩하는 방법은 무엇입니까?

<i:Interaction.Triggers> 
     <i:EventTrigger EventName="AgentSearchCompleted" SourceObject="{Binding}"> 
      <ei:CallMethodAction TargetObject="{Binding ElementName=ctlAgentSearchBox}" MethodName="PopulateComplete" /> 
     </i:EventTrigger> 
    </i:Interaction.Triggers> 

public void GetActiveAgentsByNumber(object sender, PopulatingEventArgs e) 
{ 
    e.Cancel = true; 
    (DataContext as BidAgentEditViewModel).GetActiveAgentsByNumber(number.ToString()); 
} 

뒤에

<sdk:AutoCompleteBox Name="ctlAgentSearchBox" Width="300" Margin="0,5,0,0" HorizontalAlignment="Left" ItemsSource="{Binding AvailableAgents}" 
SelectedItem="{Binding SelectedAgent}" FilterMode="None" ValueMemberPath="SearchDisplayString" MinimumPrefixLength="1"> 
<sdk:AutoCompleteBox.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding SearchDisplayString}"/> 
     </DataTemplate> 
</sdk:AutoCompleteBox.ItemTemplate> 
</sdk:AutoCompleteBox> 

코드 뷰 모델

 public void GetActiveAgentsByNumber(string agentNumber) 
    { 
     _bidAgentDataService.GetActiveAgentsByNumber(agentNumber, getActiveAgentsByNumberCallback); 
     } 
     private void getActiveAgentsByNumberCallback(IEnumerable<AgentSearchDto> result) 
     { 
      AvailableAgents = result; 
      Event.Raise(AgentSearchCompleted, this); 
     } 

    private AgentSearchDto _selectedAgent; 
     public AgentSearchDto SelectedAgent 
     { 
      get { return _selectedAgent; } 

      set 
      { 
       _selectedAgent = value; 

       BidAgent.AgentId = Int32.Parse(_selectedAgent.Id); 
       BidAgent.AgentName = _selectedAgent.FullName; 
       BidAgent.AgentNumber = _selectedAgent.Number; 
       BidAgent.AgencyName = _selectedAgent.AgencyName; 

       RaisePropertyChanged(()=>SelectedAgent); 
      } 
     } 

    private BidAgentDto _bidAgent; 
     public BidAgentDto BidAgent 
     { 
      get { return _bidAgent; } 
      private set 
      { 
       _bidAgent = value; 
       RaisePropertyChanged(() => BidAgent); 
       SelectedAgent = new AgentSearchDto() 
            { 
             Id = _bidAgent.AgentId.ToString(), 
             Number = _bidAgent.AgentNumber, 
             FullName = _bidAgent.AgentName 
            }; 
      } 
     } 

답변

0

SelectedAgent 속성과 AvailableAgents 속성의 일치하는 항목에 의해 반환 된 객체에 있는지 그것을 가능 사실 두 가지 동일한 데이터를 포함하는 객체 인스턴스가 있습니까? 그렇다면 일치하는 인스턴스를 AvailableAgents에서 SelectedAgent으로 할당하면 해당 세트가 반환됩니다.

+0

양식이로드 될 때 AvailableAgents에 아무 것도 표시되지 않으며 사용자가 검색을 시작한 후에 만 ​​채워집니다. 이것은 기존 레코드를 편집하기위한 것입니다. 처음에는 자동 완성에 표시 할 값이 있습니다. – epitka

관련 문제