【发布时间】:2012-01-23 02:00:51
【问题描述】:
我希望我的用户能够从 WPF 中的 ComboBox 中选择一个客户端(自定义对象)。 ComboBox 将按其 FirstName(字符串)和 LastName(字符串)显示所有客户端。
所以基本上我的 ViewModel 公开了一个客户端,这是用户将做出的选择,以及用于填充 ComboBox 的所有客户端的列表。 ComboBox 的声明如下所示:
<ComboBox Grid.Row="3" Grid.Column="1" Text="{Binding Client}" ItemsSource="{Binding Clients}" IsEditable="True">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} {1}">
<Binding Path="FirstName"/>
<Binding Path="LastName"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
当然这不起作用,因为 Text 属性显示一个原始客户端(显示类型名称),并且如果用户键入名称,则无法将其转换为客户端。这似乎是一件非常简单的事情,但是通过在线搜索我似乎找到了几十种不同的解决方案:创建一个具有正确格式名称的包装器类型,使用值转换器,使用数据模板......我不熟悉所有那些 WPF 技术,所以请帮我找出最好的(希望是简单的!)解决方案。
谢谢!
【问题讨论】:
标签: c# wpf xaml data-binding combobox