0

フォルダーから写真を取得してリストボックスに表示するために使用XmlDataProviderしていましたが、リストボックスが表示されてもそれらの写真が表示されないという問題があります。写真は、プロジェクト ディレクトリの Resources というフォルダーにあります。

コード、xmldata 部分は次のとおりです。

        <!-- List content -->
        <XmlDataProvider x:Key="tri" XPath="Root">
            <x:XData>
                <Root xmlns="">
                    <Entry Name="Cone" Image="\Resources\cone.jpg" />
                    <Entry Name="Cube" Image="\Resources\cube.jpg" />
                    <Entry Name="Cylinder" Image="\Resources\cylinder.jpg" />
                    <Entry Name="Icosahedron" Image="\Resources\icosahedron.jpg" />
                    <Entry Name="Octahedron" Image="\Resources\octahedron.jpg" />
                    <Entry Name="Sphere" Image="\Resources\sphere.jpg" />
                    <Entry Name="Torus" Image="\Resources\torus.jpg" />
                    <Entry Name="YinYang" Image="\Resources\yinyang.jpg" />
                    </Root>
            </x:XData>
        </XmlDataProvider>

次に、リストボックス部分:

<s:SurfaceListBox x:Name="triList" Grid.Row="1" 
                      s:SurfaceDragDrop.DragCompleted="OntriListDragCompleted" 
                      s:SurfaceDragDrop.DragCanceled="OntriListDragCanceled" 
                      PreviewMouseLeftButtonDown="OntriListPreviewMouseLeftButtonDown" 
                      PreviewMouseMove="OntriListPreviewMouseMove"
                      PreviewMouseLeftButtonUp="OntriListPreviewMouseLeftButtonUp" 
                      ItemsSource="{Binding Source={StaticResource tri}, XPath=Entry}" 
                      Style="{StaticResource triListStyle}" 
                      PreviewTouchDown="OntriListPreviewTouchDown" 
                      PreviewTouchMove="OntriListPreviewTouchMove" 
                      PreviewTouchUp="OntriListPreviewTouchUp" Height="234" VerticalAlignment="Top" Visibility="Visible" ItemsPanel="{Binding}" AllowDrop="False" />

リストのスタイル:

<Style x:Key="triListStyle" TargetType="{x:Type s:SurfaceListBox }">
            <Setter Property="Background" Value="{DynamicResource {x:Static s:SurfaceColors.ListBoxItemBackgroundBrushKey}}" />
            <Setter Property="SelectionMode" Value="Single" />
            <Setter Property="Height" Value="234" />
            <Setter Property="ItemTemplateSelector">
                <Setter.Value>
                    <sc:triListTemplateSelector>
                        <sc:triListTemplateSelector.NormalItemTemplate>
                            <DataTemplate >
                                <StackPanel RenderTransformOrigin="0.5, 0.5"                                
                               Margin="7,0,0,0" 
                               MinWidth="171" MaxWidth="171"                                
                               MinHeight="235" MaxHeight="235">
                                    <Image Margin="14,21,21,11" Source="{Binding XPath=@Image}" 
                            Height="149" Width="101" />
                                    <TextBlock Text="{Binding XPath=@Name}" 
                             MaxWidth="116"
                             FontSize="12"                 
                             Margin="21,0,21,21"
                             FontFamily="Segoe360" 
                             TextAlignment="Center"
                             TextWrapping="Wrap"
                             Foreground="{DynamicResource {x:Static s:SurfaceColors.ListBoxItemForegroundBrushKey}}"  
                             HorizontalAlignment="Center" />
                                </StackPanel>
                              </DataTemplate>
                        </sc:triListTemplateSelector.NormalItemTemplate>

                        <sc:triListTemplateSelector.StartingItemTemplate>
                            <DataTemplate>
                                <Grid Margin="17, 0, 0, -14">
                                    <StackPanel RenderTransformOrigin="0.5, 0.5" 
                                Margin="7,0,0,0" 
                                MinWidth="171" MaxWidth="171" 
                                MinHeight="235" MaxHeight="235">
                                        <Image Margin="14,21,21,11" 
                           Source="{Binding XPath=@Image}" 
                           Height="149" 
                           Width="101" />
                                        <TextBlock Text="{Binding XPath=@Name}" 
                            MaxWidth="116"
                            FontSize="12"          
                            Margin="21,0,21,21"
                            FontFamily="Segoe360" 
                            TextAlignment="Center"
                            TextWrapping="Wrap"
                            Foreground="{DynamicResource {x:Static s:SurfaceColors.ListBoxItemForegroundBrushKey}}"  
                            HorizontalAlignment="Center" />
                                    </StackPanel>
                                    <Rectangle Fill="{DynamicResource {x:Static s:SurfaceColors.SurfaceWindowBackgroundBrushKey}}" 
                               Width="17" HorizontalAlignment="Left" Margin="-26,-2.5,0,3" />
                                </Grid>
                            </DataTemplate>
                        </sc:triListTemplateSelector.StartingItemTemplate>                        
                    </sc:triListTemplateSelector>              

                </Setter.Value>
            </Setter> 
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate>
                        <s:SurfaceScrollViewer Background="{TemplateBinding Background}" 
                                   VerticalScrollBarVisibility="Disabled" 
                                   HorizontalScrollBarVisibility="Hidden" 
                                   CanContentScroll="True">
                            <!--<sc:LoopingPanel IsItemsHost="True" /> -->
                        </s:SurfaceScrollViewer>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

問題を見つけるのを手伝ってもらえますか?

4

1 に答える 1

1

ListBox にいくつかの画像を表示するために XmlDataProvider が必要な理由はわかりませんが、実際に各画像を視覚化するImageコントロールを持つDataTemplateが必要です。

<DataTemplate x:Key="imageTemplate">
    <Image Source="{Binding XPath=@Image}"/>
</DataTemplate>

ItemTemplateプロパティを設定して、ListBox でそれを使用します。

<s:SurfaceListBox ... ItemTemplate="{StaticResource imageTemplate}"/>

また、ビルド アクションResourceがVisual Studio プロジェクトの画像ファイルに対して に設定されていることを確認してください。

于 2013-02-09T20:43:09.660 に答える