2 つのデータベース列から 1 つのコンボボックスのコンテンツを表示したいと考えています。「姓名」を表示したいのですが、方法がわかりません。MVVM パターンを使用して C# (.NET) で作業しています。「名前」と「姓」はテーブル「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から直接取得されました。詳しくはそちらを参照