在一个组合框中显示数据库中的多个列
本文关键字:显示 数据库 组合 一个 | 更新日期: 2023-09-27 18:16:26
我想在一个组合框中显示来自两个数据库列的内容。我想展示"姓名",但我不知道怎么做。我在c# (. net)使用MVVM模式工作。"Name"answers"姓氏"是表"tblGuests"中的字段。
提前感谢,弗拉基米尔。
您可以为ComboBox创建一个ItemTemplate,它绑定到您想要显示的所有属性。
<ComboBox ItemsSource="{Binding}">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=FirstName}" Padding="10,0,0,0"/>
<TextBlock Text="{Binding Path=LastName}" Padding="10,0,0,0"/>
</StackPanel>
<DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
你甚至可以创建一个可以重用的UserControl,并使用它:
<PersonView>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=FirstName}" Padding="10,0,0,0"/>
<TextBlock Text="{Binding Path=LastName}" Padding="10,0,0,0"/>
</StackPanel>
</PersonView>
<ComboBox ItemsSource="{Binding}">
<ComboBox.ItemTemplate>
<DataTemplate>
<PersonView/>
<DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
在Viewmodel中保留一个字符串列表属性,
通过组合姓名字符串和姓氏字符串在数据加载方法中填充该属性,
将字符串属性绑定到组合框,
<ComboBox Name="ComboBox1" ItemsSource="{Binding YourStringListProperty}"/>
另一个选择是使用MultiBinding像这样
<TextBlock Name="textBox2" DataContext="{StaticResource NameListData}">
<TextBlock.Text>
<MultiBinding Converter="{StaticResource myNameConverter}"
ConverterParameter="FormatLastFirst">
<Binding Path="FirstName"/>
<Binding Path="LastName"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
此代码直接取自msdn。详细信息请参考