0

这是我第一次在 WPF 中使用 UserControl。以下是我的 Usercontrol Xaml 和后台 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从 xaml 的列表框中删除 ,因为您已经在您的代码隐藏文件中设置了它。

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

终于从这篇文章中找到了答案:访问构建操作资源类型文件在我的情况下,我为格式字符串“/HOD;component/Resources/Box.png”而不是 BitmapImage

于 2012-09-03T19:01:25.063 回答