前提・実現したいこと
Xamlのコンボボックスに画像を表示
<ListView x:Name="lsvHoge" Grid.Column="0" Margin="10,5,10,5" ItemsSource="{Binding}"> <ListView.View> <GridView> <GridViewColumn Width="100"> <HeaderedContentControl Name="hdrSeg">セグ</HeaderedContentControl> <GridViewColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding SegmentCode}" /> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> <GridViewColumn Width="150"> <HeaderedContentControl Name="hdrItem">アイテムコード</HeaderedContentControl> <GridViewColumn.CellTemplate> <DataTemplate> <StackPanel> <StackPanel> <TextBlock Text="{Binding ItemCode}" /> </StackPanel> <StackPanel> <StackPanel> <Label Content="名称" /> <TextBlock Text="{Binding Description}" /> </StackPanel> </StackPanel> </StackPanel> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> <GridViewColumn Width="150"> <HeaderedContentControl Name="hdrMark">マーク</HeaderedContentControl> <GridViewColumn.CellTemplate> <DataTemplate> <ComboBox DisplayMemberPath="Name" ItemsSource="{Binding Path=PhonebookEntries, Mode=TwoWay}" SelectedValue="{Binding Path=PhonebookEntry, Mode=TwoWay}" SelectedValuePath="Id"> <ComboBox.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <Image Source="{Binding Name}" /> </StackPanel> </DataTemplate> </ComboBox.ItemTemplate> </ComboBox> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> </GridView> </ListView.View> </ListView>
lsvHogeは以下のように自作のクラスをバインドしています。
this.lsvHoge.DataContext = 自作クラスのリスト;
以下のコンボボックスに画像を表示したいです。
自作クラスのリストにImagesはないです。
画像の元はあるファイルにある全ての画像を対象とし、そのリストをImagesとして別途バインドしたいです。
自分の調べ方が悪いかの参考になるような記事が出てこずこまっています。
選択時の値はIDとなる部分の値が取得できるようにしたいです。
参考になる記事や、やり方を教えていただきたいです。
xamlの時点でもう一工夫足りていないような気がします。
<ComboBox DisplayMemberPath="Name" ItemsSource="{Binding Path=Images, Mode=TwoWay}" SelectedValue="{Binding Path=Image, Mode=TwoWay}" SelectedValuePath="Id"> <ComboBox.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <Image Source="{Binding Name}" /> </StackPanel> </DataTemplate> </ComboBox.ItemTemplate> </ComboBox>
/////////////////////////////////////////////////////////////////////
以下のようなクラスを作って値を作成しバインドしたのですが、コンボボックスになにも表示されてないです。
this.DataContext = Images(Imageのリスト);
public class Image { public string Id { get; set; } public BitmapImage Name { get; set; } public Image(string Id, BitmapImage image) { this.Id = Id; this.Name = image; } } BitmapImageクラスは以下のように生成 new BitmapImage(new Uri(@"01.png")));
回答2件
あなたの回答
tips
プレビュー