0

WPFでUserControlを使用するのはこれが初めてです。以下は、私のUsercontrolXamlとバックグラウンドVBコードです。

<UserControl x:Class="AddNewGenre"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             mc:Ignorable="d" d:DesignHeight="194" d:DesignWidth="405">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="30" />
            <RowDefinition Height="130" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="72*" />
            <ColumnDefinition Width="333*" />
        </Grid.ColumnDefinitions>

        <ListBox Name="GenreListBox" ItemsSource="{Binding}"
                 Grid.Row="1" Grid.Column="1">
            <ListBox.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapPanel IsItemsHost="True" />
                </ItemsPanelTemplate>
            </ListBox.ItemsPanel>
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Image Source="{Binding Value}" Width="128" Height="128" />
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </Grid>
</UserControl>

コードファイル:

Public Class AddNewGenre
    Dim Result As HODLib.Classes.GenreClass

    Public Sub New()

        ' This call is required by the designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        Me.DataContext = Result
    End Sub

    Private Sub UserControl_Loaded(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded

        GenreListBox.ItemsSource = GlobalValues.ImageDictionary
    End Sub

End Class

以下は、GlobalValues.ImageDictionaryを取得するコードです。

Namespace GlobalValues
    Module CurrentVariables
        Public ImageDictionary As Concurrent.ConcurrentDictionary(Of String, BitmapImage)

        Public Sub Initialize()
            ImageDictionary = New Concurrent.ConcurrentDictionary(Of String, BitmapImage)

            'try get resources
            GetAllBitmaps()

        End Sub

        Public Sub GetAllBitmaps()
            Try
                ImageDictionary.Clear()
                With ImageDictionary
                    .TryAdd("Box", New BitmapImage(New Uri("Resources\Box.png", UriKind.Relative)))
                    .TryAdd("Tri", New BitmapImage(New Uri("Resources\Tri.png", UriKind.Relative)))
                End With
            Catch ex As Exception

            End Try
        End Sub

    End Module
End Namespace

問題は、画像が画像リストボックスに表示されず、黒いアイテムのみが表示されることです。私がここでした間違ったことを教えてください。

4

2 に答える 2

0

ItemsSourceはyurコードビハインドファイルですでに設定されているため、xamlのリストボックスから削除します。

<ListBox Name="GenreListBox"
                 Grid.Row="1" Grid.Column="1">
于 2012-09-03T16:27:26.517 に答える
0

最後に、この投稿から回答が見つかりました。ビルドアクションリソースタイプファイルへのアクセス私の場合、BitmapImageではなく「/HOD;component/Resources/Box.png」形式の文字列に値を設定しました。

于 2012-09-03T19:01:25.063 に答える