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