1

无法弄清楚为什么在 ViewModel 中的 BidAgent 初始设置为某个值之后没有设置 Text 属性?搜索和选择工作正常,但初始绑定没有。基本上,我想要的是当我为视图设置视图模型 (BidAgent) 时,它会显示从 BidAgent 上的值显式创建的所选项目的文本。任何想法如何做到这一点?

  <i:Interaction.Triggers>
        <i:EventTrigger EventName="AgentSearchCompleted" SourceObject="{Binding}">
            <ei:CallMethodAction TargetObject="{Binding ElementName=ctlAgentSearchBox}" MethodName="PopulateComplete" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
<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(object sender, PopulatingEventArgs e)
{
    e.Cancel = true;
    (DataContext as BidAgentEditViewModel).GetActiveAgentsByNumber(number.ToString());
 }

视图模型

     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
                                    };
            }
        }
4

1 回答 1

0

属性返回的对象SelectedAgent及其在属性中的匹配条目是否可能AvailableAgents实际上是两个不同的对象实例,它们恰好包含相同的数据?如果是这样,请在返回集合后尝试将匹配的实例从 分配AvailableAgentsSelectedAgent

于 2010-12-10T22:41:16.653 回答