我想在我的应用程序中使用radAutocompletebox。 ItemSource
是从我的数据库动态获取的。我有这样的代码:
var list = extrainfo.database.UserPrivateInfoes;
foreach (var item in list)
{
obs.Add( new RadAutoCompleteBoxItem{Content= item.UName} );
}
TX_Receiver.ItemsSource = obs;
哪个障碍物是可观察的集合。
问题是当项目显示在下拉列表中时,我有一个带有两个交叉按钮的项目可以删除。实际上它还不够好!!但是,当我向String
添加ItemSource
列表时,问题就解决了。我需要一个项目而不只是一个字符串作为其名称,我需要更多信息(如UID)的每个项目。
有没有解决方案?
这是我的新代码:
<DataTemplate x:Key="CustomDropDownItemTemplate">
<TextBlock
Text="{Binding Content}" />
</DataTemplate>
ItemsSource="{Binding obs}" DropDownItemTemplate="{StaticResource CustomDropDownItemTemplate}" />
public class Country
{
public string Content;
}
obs.Add( new Country {Content= item.UName} );
当我调试我的代码时,它正确地将所有数据添加到itemsource,但是当我在Autocompletebox中选择一个项目时,它在框中没有显示任何内容。带有十字按钮的EMPTY项目。我想展示内容!!!!
经过24小时后!!我终于找到了我的答案,DisplayMemberPath。耶!1 这是我的代码: var list = from item in extrainfo.database.UserPrivateInfoes
join gp in extrainfo.database.OrganizationRoles on item.UserOrgzRole equals gp.RoleId
select new {item.UserId,item.UName,item.UserLastName,gp.RoelName};
foreach (var item in list)
{
obs.Add(new RadAutoCompleteBoxItem { Content = item.UName + " " + item.UserLastName + " " + item.RoelName });
Persondic.Add(item.UName + " " + item.UserLastName + " " + item.RoelName,item.UserId);
}
的DisplayMemberPath = “内容”
答案 0 :(得分:0)
我需要一个项目而不只是一个字符串作为其名称,我需要更多信息(如UID)的每个项目。有没有解决方案??
您可以完成此using custom ItemTemplate,如CustomDropDownItemTemplate示例中所示:
有些事情:
<telerik:RadAutoCompleteBox ItemsSource="{Binding obs}" DropDownItemTemplate="{StaticResource CustomDropDownItemTemplate}"/>
<DataTemplate x:Key="CustomDropDownItemTemplate">
... your layout goes here ...
</DataTemplate>