Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverlight AutoCmletBox:如何绑定文本属性以显示所选项目是什么?_Silverlight_Autocompletebox - Fatal编程技术网

Silverlight AutoCmletBox:如何绑定文本属性以显示所选项目是什么?

Silverlight AutoCmletBox:如何绑定文本属性以显示所选项目是什么?,silverlight,autocompletebox,Silverlight,Autocompletebox,无法理解为什么在ViewModel中的BidAgent初始设置为某个值后,不设置文本属性?搜索和选择工作正常,但初始绑定不起作用。基本上,我想要的是,当我为视图设置视图模型(BidAgent)时,它显示所选项目的文本,该文本是根据BidAgent上的值显式创建的。有什么办法吗 <i:Interaction.Triggers> <i:EventTrigger EventName="AgentSearchCompleted" SourceObject="{Bin

无法理解为什么在ViewModel中的BidAgent初始设置为某个值后,不设置文本属性?搜索和选择工作正常,但初始绑定不起作用。基本上,我想要的是,当我为视图设置视图模型(BidAgent)时,它显示所选项目的文本,该文本是根据BidAgent上的值显式创建的。有什么办法吗

  <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(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
                                    };
            }
        }
public void GetActiveAgentsByNumber(字符串agentNumber)
{
_GetActiveAgentsByNumber(agentNumber,GetActiveAgentsByNumber调用);
}
私有void getActiveAgentsByNumberCallback(IEnumerable结果)
{
有效成分=结果;
Event.Raise(AgentSearchCompleted,this);
}
私人代理搜索到所选代理;
公共代理搜索所选代理
{
获取{return\u selectedAgent;}
设置
{
_selectedAgent=值;
BidAgent.AgentId=Int32.Parse(_selectedAgent.Id);
BidAgent.AgentName=\u selectedAgent.FullName;
BidAgent.AgentNumber=\u selectedAgent.Number;
BidAgent.AgencyName=\u selectedAgent.AgencyName;
RaisePropertyChanged(()=>SelectedAgent);
}
}
私人招标代理机构至招标代理机构;
公开招标代理
{
获取{return\u bidAgent;}
专用设备
{
_投标代理=价值;
RaisePropertyChanged(()=>招标代理);
SelectedAgent=新代理SearchDTO()
{
Id=_bidAgent.AgentId.ToString(),
编号=_bidAgent.AgentNumber,
全名=_bidAgent.AgentName
};
}
}

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

加载表单时,AvailableAgent中没有任何内容,只有在用户开始搜索后才会填充。这用于编辑现有记录。因此,最初我有一些值,我想显示在自动完成。
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
                                    };
            }
        }