我想在两个数据库列中显示一个组合框内容。我想显示“姓氏姓氏”,但我不知道如何。我正在使用MVVM模式在C#(.NET)中工作。 “姓名”和“姓氏”是表“tblGuests”中的字段。
提前致谢, 弗拉基米尔
答案 0 :(得分:3)
您可以为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>
答案 1 :(得分:1)
在Viewmodel中保留字符串列表属性,
通过组合名称和姓氏字符串
,在数据加载方法中填充该属性将字符串属性绑定到组合框
<ComboBox Name="ComboBox1" ItemsSource="{Binding YourStringListProperty}"/>
答案 2 :(得分:1)
另一种选择可能是使用类似这样的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。有关详细信息,请参阅它