在一个组合框中显示数据库中的多个列

时间:2013-06-03 06:58:40

标签: c# .net wpf mvvm

我想在两个数据库列中显示一个组合框内容。我想显示“姓氏姓氏”,但我不知道如何。我正在使用MVVM模式在C#(.NET)中工作。 “姓名”和“姓氏”是表“tblGuests”中的字段。

提前致谢, 弗拉基米尔

3 个答案:

答案 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。有关详细信息,请参阅它