■86088 / inTopicNo.8) |
Re[7]: WPF ListViewでLargeIcon風に表示 |
□投稿者/ きみのぶ (9回)-(2017/12/17(Sun) 19:26:36)
|
ResourceDictionaryを使った方法を試してみました。
Themesフォルダ配下にGeneric.xamlを下記のように記述しました。 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:l="clr-namespace:IconExtracter" xmlns:local="clr-namespace:IconExtracter">
<!-- ListViewのスタイル定義 --> <Style x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type l:ImageView}, ResourceId=ImageView}" TargetType="{x:Type ListView}" BasedOn="{StaticResource {x:Type ListBox}}" > <Setter Property="BorderBrush" Value="Black"/> <Setter Property="BorderThickness" Value="0.5"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate> <Border Name="bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Margin="{TemplateBinding Margin}"> <ScrollViewer Margin="{TemplateBinding Padding}"> <WrapPanel ItemWidth="160" IsItemsHost="True" MinWidth="100" Width="{Binding ActualWidth, RelativeSource={RelativeSource AncestorType=ScrollContentPresenter}}"> </WrapPanel> </ScrollViewer> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style> <!-- ListViewItemのスタイル定義 --> <Style x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type l:ImageView}, ResourceId=ImageViewItem}" TargetType='{x:Type ListViewItem}' BasedOn='{StaticResource {x:Type ListBoxItem}}'> <!-- <Style.Resources> <l:UriImageConverter x:Key="uriImageConverter"/> </Style.Resources> --> <Setter Property='Padding' Value='3'/> <Setter Property='Margin' Value='5'/> <Setter Property='HorizontalContentAlignment' Value='Center'/> <Setter Property="ContentTemplate"> <Setter.Value> <DataTemplate> <Border Background="White"> <StackPanel Orientation="Vertical"> <Grid Width="150" Height="126"> <Image Margin="0,3,0,3" Source="{Binding BitmapSource}" Width="{Binding PreferredWidth}" Height="{Binding PreferredHeight}"/> </Grid> <TextBlock Text="{Binding Index}" TextWrapping="Wrap" HorizontalAlignment="Center" FontSize="15" Name="WordText" Foreground="Black" Margin="0,0,0,5"/> </StackPanel> </Border> </DataTemplate> </Setter.Value> </Setter> </Style>
</ResourceDictionary>
そして、ListViewのxamlは、下記の通りに記述しました。 <ListView Name="listView1" HorizontalAlignment="Stretch" Grid.Row="1" VerticalAlignment="Stretch" ItemsSource="{Binding IconBitmapCollection, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" > <ListView.View> <local:ImageView x:Name="iconView" /> </ListView.View> </ListView>
すると行は生成されますが、何も表示されません。 ItemsSourceにBindingしているIconBitmapCollectionは、下記の通りです。 private ObservableCollection<IconBitmap> iconBitmapCollection; public ObservableCollection<IconBitmap> IconBitmapCollection { get { return this.iconBitmapCollection; } set { this.iconBitmapCollection = value; base.RaisePropertyChanged("IconBitmapCollection"); } } IconBitmapクラスは下記の通りです。 class IconBitmap { private BitmapSource bitmapSource; public BitmapSource BitmapSource { get { return this.bitmapSource; } set { this.bitmapSource = value; } }
private int index; public int Index { get { return this.index; } set { this.index = value; } } } プログラムをステップ毎に実行させて調べたところ、IconBitmapクラスのgetメソッドが実行されません。 何がいけないのでしょうか?
|
|